Wie bind ich procs ein ?
-
Ich schreibe win32 programme (Anfänger)
Fand dieses Proc um Programmpfad herauszufinden, jetzt meine frage
wie bind ich es ein?
Wie ruf ich es auf ?GetMyPathName proc ;*** Get application path/name invoke GetModuleFileName,NULL,addr MyRealName,sizeof MyRealName invoke MessageBox, hWnd, addr MyRealName, addr myCaption, MB_ICONINFORMATION or MB_APPLMODAL ret GetMyPathName endp
danke
-
wo willst du es denn einbinden/aufrufen??? C/C++ Programm oder in dem Asm-Proggie selbst?? bei C/C++ müsstest du dem Funktionsnamen noch ein Unterstrich vorne anfügen (_GetMyPathName) und dann mittels
extern "C" { void GetMyPathName (...); }
bei C++ oder mit
extern void GetMyPathName (...);
bei C einbinden, dann kannst du die ganz normal aufrufen. unter assembler müsstest du die call-instruktion verwenden:
call GetMyPathName
bei bedarf natürlich vorher noch werte/argumente auf den stack pushen
cya l8r, todo
-
In Assembler das Extern aber auch nicht vergessen und das Programm was aufgerufen werden soll sowohl public als auch mit Far deklarieren:
EXTRN GetMyPathName:FAR
(natürlich OHNE ";", dass macht der irgendwie automatisch) in der aufzurufenden Datei dann noch:
PUBLIC GetMyPathName
und in der Prozedurdeklaration:
GetMyPathName PROC FAR
Code-Hacker
-
Warum nicht einfach (benutze Masm32 Radasm)
invoke GetAppPath, eax
ohne Deklarationen davor und dahinter ??
-
Naja, solche Anweisungen habe ich gelesen sollen nicht sehr optimiert sein und den Geschwindigkeitsvorteil nehmen.
Code-Hacker