Seite 1 von 1

[WinAPI] GetProcessImageFileName(...)

Verfasst: 30.07.2007 11:15
von Leonhard
Wie kann man die Funktion GetProcessImageFileName(...) in PureBasic verwenden?

Ich bekomme die einfach nicht ins Programm rein.

Ich zeig hier mal meine Versuche, die Funktion zu integrieren:

Versuch 1:

Code: Alles auswählen

Import "Psapi.lib"
  CompilerIf #PB_Compiler_Unicode
  GetProcessImageFileName.l(hProcess.l, *lpImageFileName, nSize.l) As "_GetProcessImageFileNameW@12"
  CompilerElse
  GetProcessImageFileName.l(hProcess.l, *lpImageFileName, nSize.l) As "_GetProcessImageFileNameA@12"
  CompilerEndIf
EndImport

Define String$ = Space(255)
GetProcessImageFileName(0, @String$, Len(String$))
PureBasic-ERROR:
PureBasic - Linker error
POLINK: error: Unresolved external symbol '_GetProcessImageFileNameW'.
POLINK: fatal error: 1 unresolved external(s).
Ich habs auch mit ImportC und ohne As versucht.

Versuch 2:

Code: Alles auswählen

OpenLibrary(1, "Psapi.dll")

Debug GetFunction(1, "GetProcessImageFileName")
Debug gibt 0 zurück.

Ich habe mit einem Programm in der DLL nachgeschalgen, das mir sagt, das beide Funktionen exsistieren:
Ordinal | Adresse | Name
-----------+------------+--------------------------
0x00000013 | 0x76BB3DE5 | GetProcessImageFileNameA
0x00000014 | 0x76BB3D57 | GetProcessImageFileNameW
Wie bekomm ich die Funktion nun eingeladen?

Verfasst: 30.07.2007 11:30
von ts-soft
Erster Versuch kann nicht gehen, da es in der Lib nicht vorhanden ist, evtl
hilft eine neuere Version.

Zweiter Versuch kann nicht gehen, da fehlt das A oder W!!!

Ansonsten ist mind. WinXP erforderlich

Verfasst: 30.07.2007 12:46
von Leonhard
ts-soft hat geschrieben:Erster Versuch kann nicht gehen, da es in der Lib nicht vorhanden ist, evtl
hilft eine neuere Version.
Die Funktion nicht, aber die Lib ist vorhanden!
ts-soft hat geschrieben:Zweiter Versuch kann nicht gehen, da fehlt das A oder W!!!
Oh, das hab ich ganz übersehen. Danke!

Verfasst: 30.07.2007 12:56
von ts-soft
>> Die Funktion nicht, aber die Lib ist vorhanden!
Die enthält aber nur die Funktionen, die es seit Win95 gibt, XP Funktionen
sind nicht enthalten, dafür brauchste eine neuere Version oder Du erstellst
Dir eine Mithilfe von "polib.exe" oder "ar.exe" o. ä.