exe name herausfinden
Übersicht

![]() |
Silver_KneeBetreff: exe name herausfinden |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich möchte den namen meine Exe Herausfinden. ich hab sogar eine Idee: In BLitz3D kann man sich über Systemproperty die Hinst holen und mit der dürfte sich bestimmt auch der Prozessname anzeigen lassen. Leider konnte ich nicht den richtigen WinApi-Befehl finden. evtl weiß ihn einer von euch und ich kann mir stundenlange Suche sparen.
THX im vorraus |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Blitz3D? BlitzPlus? BlitzMax?
2. Wenn ja, warum im Smalltalk und nicht im entsprechenden Forum? |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also B3D. Ich dachte hierbei geht es um ein allgemeines Programmierproblem und nicht speziell um Befehle von BlitzBasic. Hätte ich aber auch im Allgemein-Forum von BB Posten können. Da haste Recht. Nungut desalb frage ich ja wie ich mit zB der HINST, die ich mir ja mit SystemProperty("AppHInst") holen kann, den eigenen Prozessnamen herausfinden kann. Es geht nämlich darum den EXE-PACKER anzuwenden, nur soll der User die möglichkeit haben die EXE umzubenennen. Wäre ja blöd wenn dann die Dateien verloren gehen würden. | ||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Funktion, die du brauchst, heißt GetModuleFileName ( aus der kernel32.dll ).
Hier die Userlib: Zitat: .lib "kernel32.dll"
api_GetModuleFileName%( module%, filename*, chars% ) Beachte, dass Filename kein String ist, sondern als Bank übergeben werden muss. GetModuleFilename schreibt den Dateinamen in "filename", aber Blitz-Strings können nicht per DLL geändert werden. Deshalb muss man den Umweg über Banks gehen. Und ein Beispiel: Code: [AUSKLAPPEN] Local bank = CreateBank( 1023 )
api_GetModuleFileName( 0, bank, 1023 ) Local name$, byte For i=0 To 1023 byte = PeekByte( bank, i ) If byte = 0 Exit name = name + Chr( byte ) Next FreeBank bank Print name WaitKey End Als ersten Parameter kannst du 0 angeben, dann wird automatisch die eigene HINSTANCE verwendet. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
ungebildeter Neuling |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leider kommt bei mir immer "User lib function not found".
Obwohl ich des wie immer in die Userlib gemacht habe, kommt diese Meldung. |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuch's mal mit api_GetModuleFileNameA. | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
ungebildeter Neuling |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann kommt "function api_getmodulefilenamea not found" | ||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst die .decls-Datei logischerweise auch anpassen. | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
ungebildeter Neuling |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann kommt wieder "User lib function not found" | ||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, weil das "api_" vor dem Funktionsnamen nicht so in der DLL drin steht.
Mach es so: Code: [AUSKLAPPEN] .lib "kernel32.dll"
api_GetModuleFileName%( module%, filename*, chars% ) : "GetModuleFileNameA" Im Quelltext schreibst du dann einfach "api_GetModuleFileName" ( ohne A ). |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
ungebildeter Neuling |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja, so funktionierts, vielen Dank ![]() |
||
![]() |
hamZtaAdministrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Name des Programms wird eigentlich auch immer als erstes Start-Argument übergeben - warum also so komplizierte Wege einschlagen? | ||
Blog. |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
hamzta, ja, aber nicht bei bb. In CommandLine$() ist nur alles nach dem Dateinamen. Das geht so nur in Bmax über AppArgs[0], und natürlich in fast allen anderen Sprachen. | ||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
hamZtaAdministrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh, das wusste ich nicht. Dann ziehe ich natürlich alles zurück ![]() |
||
Blog. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group