Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmname rausfinden?
Hey,
In meinem C++ Programmname kommen Unicodezeichen vor, und nun möchte ich das Programm in einen bestimmten Ordner Kopieren können. Diesen Ordner habe ich zuvor mit getenv(); erkannt und dann als String vorliegen. Nun möchte ich gern wissen wie ich den Programmname meines c++ im Programm selbst Dynamisch auslesen kann (das unicode richtig dargestellt) und dann z.b per cout ausgeben kann, ohne das ein z.b H?.exe" rauskommt. Da ich das Programm Unabhängig des Dateinamen in einen Ordner kopieren können muss wäre mir das sehr Wichtig, finde allerdings nirgends dazu eine Funktion o.ä, hat dazu jemand eine Idee? Zur Not Poste ich gerne ein Teil des Sourcecodes:)
Danke im Vorraus
Jut4h.tm
06.02.2012, 23:07
... in der main argv[0] google das mal ...
Unter Windows kannst du GetModuleFileNameW aus der WinAPI benutzen:
[/URL][URL="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197%28v=vs.85%29.aspx"]GetModuleFileNameW (http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197%28v=vs.85%29.aspx)
@Jut4h.tm (http://free-hack.com/member.php?u=35690)
Das geht nur wenn im Programmname kein Unicode vorkommt, was jedoch der Fall ist!
@sp1nny
kannst du mir dazu ein kleines Codebeispiel machen? Habe es nun versucht bekomme aber andauernd Fehler usw.. komme nicht so recht damit zurecht...
(http://free-hack.com/member.php?u=35690)
Versuchs mal so:
#include <windows.h>
int main(void)
{
WCHAR filename[MAX_PATH];
DWORD lengthfn;
lengthfn = GetModuleFileNameW(NULL, filename, sizeof(filename));
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), &filename, lengthfn, NULL, NULL);
return 0;
}
:)
mfg
Habe es soeben versucht, es lässt sich Compilieren aber leider zeigts das immernoch nicht Korrekt an. Dort wo das unicode zeichen steht ist dann "H?.exe" anstelle von "Hexe.gif" (Das Unicodezeichen ist übrigens \u202e, falls das jemanden Hilft).
Normalerweise sollte WriteConsoleW(); doch Unicode korrekt darstellen können?
Nochmals Danke.
mfg cy
#include <windows.h>
int main(void)
{
WCHAR filename[MAX_PATH];
DWORD lengthfn;
lengthfn = GetModuleFileNameW(NULL, filename, sizeof(filename));
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), &filename, lengthfn, NULL, NULL);
return 0;
}
int main(void)
Das käme bei C++-strict nicht durch.
Außerdem würde ich einfach ne MessageBox zum austesten vorschlagen, viel einfacher:
int main()
{
wchar_t filename[MAX_PATH];
GetModuleFileNameW(NULL, filename, sizeof(filename));
MessageBoxW(0, filename, L"", 0);
return 0;
}
Außerdem würde ich einfach ne MessageBox zum austesten vorschlagen, viel einfacher:
Eventuell kann die cmd.exe einfach keine Unicode-Zeichen anzeigen.
C:\Users\User>type C:\Windows\System32\cmd.exe
Spielt euch ein schönes Lied auf der Konsole.
int main()
{
wchar_t filename[MAX_PATH];
GetModuleFileNameW(NULL, filename, sizeof(filename));
MessageBoxW(0, filename, L"", 0);
return 0;
}
Das hat nun funktioniert ;)! Danke :)
Werde mal etwas weiter experimentieren damit , so das ich die Funktion hinbekomme die ich brauch für mein Programm :)
Danke nochmal an alle;)
mfg Surflam
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.