|
You last visited: Today at 05:55
Advertisement
[C++] Referenz auf "sich selbst"
Discussion on [C++] Referenz auf "sich selbst" within the C/C++ forum part of the Coders Den category.
04/25/2012, 22:00
|
#1
|
elite*gold: 17
Join Date: Jul 2009
Posts: 1,562
Received Thanks: 478
|
[C++] Referenz auf "sich selbst"
Hi
ich bin ein totaler Anfänger in C++, hätte aber eine Frage:
Gibt es in C++ eine Referenz auf den Dateinamen der augeführten Datei (so wie in Perl "$0") oder eine möglichkeit, den Dateinamen zu bekommen. Am besten nur den Namen, ohne Pfad und ohne Windows API
mfg .Resistance
|
|
|
04/25/2012, 22:26
|
#2
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
__FILE__
Code:
std::cout << __FILE__ << std::endl;
printf("%s",__FILE__);
|
|
|
04/25/2012, 22:30
|
#3
|
elite*gold: 17
Join Date: Jul 2009
Posts: 1,562
Received Thanks: 478
|
Bei mir wird dabei der Dateiname der Quellcode Datei auszugeben (test.cpp)
|
|
|
04/25/2012, 22:38
|
#4
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
ay, dachte das war gemeint
Code:
PPEB pPeb=nullptr;
__asm
{
mov eax, fs:[0x30]
mov pPeb, eax
}
UNICODE_STRING DllName=pPeb->Ldr->InMemoryOrderModuleList.Flink->FullDllName;
DllName müsste in dem fall das erste modul sein (bin mir allerdings dabei nicht 100% sicher )
edit: ansonsten auch das erste argument
|
|
|
04/25/2012, 22:48
|
#5
|
elite*gold: 17
Join Date: Jul 2009
Posts: 1,562
Received Thanks: 478
|
Ist das nicht aus der WinAPI?
|
|
|
04/25/2012, 22:56
|
#6
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
Quote:
Originally Posted by .Resistance
Ist das nicht aus der WinAPI?
|
kein direkter win api call
ansonsten kannste argv[0] verwenden
|
|
|
04/25/2012, 23:01
|
#7
|
elite*gold: 17
Join Date: Jul 2009
Posts: 1,562
Received Thanks: 478
|
argv[0] ist ne gute Sache. Damit kann ich weitermachen danke
|
|
|
04/25/2012, 23:39
|
#8
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
Inline ASM nem C++ Anfänger zu empfehlen, ich glaubs nicht oO
Btw. ist das eigene Modul bzw. selbst die für die Prozesserstellung verwendete .exe nicht immer das erste Modul in der Liste.
Gibt diverse Methoden.
Zum einen den argv[0] Parameter in der main bzw. den entsprechenden CommandLine Parameter in der WinMain.
Dann gäbe es da noch APIs wie GetCommandLine() oder die Kombination
GetModuleFileName( GetModuleHandle(NULL), buf)
|
|
|
05/16/2012, 14:47
|
#9
|
elite*gold: 0
Join Date: Dec 2011
Posts: 6
Received Thanks: 1
|
Quote:
Originally Posted by MrSm!th
Inline ASM nem C++ Anfänger zu empfehlen, ich glaubs nicht oO
Btw. ist das eigene Modul bzw. selbst die für die Prozesserstellung verwendete .exe nicht immer das erste Modul in der Liste.
Gibt diverse Methoden.
Zum einen den argv[0] Parameter in der main bzw. den entsprechenden CommandLine Parameter in der WinMain.
Dann gäbe es da noch APIs wie GetCommandLine() oder die Kombination
GetModuleFileName( GetModuleHandle(NULL), buf)
|
Es muss nicht unbedingt inline asm sein. Er könnte auch __readfsdword( 0x30 ) verwenden. Nur ist dieser ganze Ansatz absolut nicht empfehlenswert.
Übrigens ist der Parameter im GetModuleHandle Makro ein pointer. Korrekt wäre es daher zu schreiben:
Code:
char cMessageBuffer[ MAX_PATH ] = { 0 };
HMODULE hStartupModule = GetModuleHandle( nullptr );
GetModuleFileNameA( hStartupModule, cMessageBuffer, MAX_PATH );
oder
Code:
wchar_t wcMessageBuffer[ MAX_PATH ] = { 0 };
HMODULE hStartupModule = GetModuleHandle( nullptr );
GetModuleFileNameW( hStartupModule, wcMessageBuffer, MAX_PATH );
Ich kopiere die Dinger übrigens auch gerne direkt in std::strings rein. &sString[0] als Adresse. Muss man aber auch selbst vorher auf die "MAX_PATH" einheiten vergrößern.
|
|
|
05/16/2012, 21:06
|
#10
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,227
|
falls ich dich richtig verstanden hab willst du sowas:
Code:
CString strName = GetCommandLine();
int pos = strName.ReverseFind( '\\');
strName = strName.Mid(1+pos);
cout << strName << endl;
ist nicht so schön oder so, aber du solltest dein ergebnis bekommen
|
|
|
Similar Threads
|
[Festplatte]"Formatiert" sich selbst
11/12/2011 - Technical Support - 8 Replies
Hey Leute
ich haben ein riesen Problem mit meiner Externen Festplatte.
Also ich habe diese in NTFS formatiert und immer wenn ich Daten aufspiele
die externe Festplatte auf einem anderen Pc anstecke dann steht da das
ich diese wieder formatieren muss....
Ich weiß aber nicht wieso.
|
Als POM sich selbst und die gruppe "seelenstein" geben
07/15/2008 - General Gaming Releases - 2 Replies
Iss mir nach nen paar ini runs aufgefallen, habs hier noch net gesehen, vielleicht isses ganz nützlich.
Vorm Boss alle auf einen haufen Knuppeln, der POM wirkt wiederbeleben auf die grp (als ob er einen rezzen wollte).
Dann ran an den Boss. Wenn einer aus der grp vereckt oder wip, bekommt man die meldung ob man den rez vom POM annehmen will.
War ganz lustig als ich vereckt bin und die meldung kam ob ich damit einverstanden bin, dass ich mich selbst rezze lol^^
Wenns Euch gefällt,...
|
All times are GMT +2. The time now is 05:55.
|
|