Process32First/Process32Next - Alternativen?!



  • MSDN schrieb:

    This function has no associated import library. You must use the LoadLibrary and GetProcAddress functions to dynamically link to Ntdll.dll

    Hattu gemacht?



  • die ntdll, gehört zu platform sdk kann das sein?
    das isb problem die is auf dem rechner hier nicht drauf,....

    [edit] zu mindest die passende *.lib



  • Wieso die passende LIB?

    Es gibt keine!

    Steht doch da:
    This function has no associated import library. You must use the LoadLibrary and GetProcAddress functions to dynamically link to Ntdll.dll

    Laut MSDN brauchst Du dafür:
    Requirements
    Client: Requires Windows XP or Windows 2000 Professional.
    Server: Requires Windows 2000 Server.

    Also gehört die Ntdll.dll zum Lieferumfang der oben angeführten Betriebssysteme...



  • ok dann sollte das nicht zu dem thread passen da ich gesagt habe das die os unter der das programm laufen soll nt4 und 2000 sind. nur wenn ich hier unter nt4 progge dann nützt mir das alles nix...



  • ScriptGod schrieb:

    DWORD PIDs[ 4096 ];
    	DWORD nBytesNeeded = 0;
    	EnumProcesses( PIDs, sizeof( PIDs ), &nBytesNeeded );
    	for( DWORD n = 0; n < nBytesNeeded / sizeof( DWORD ); n++ )
    	{
    		CHAR szNameBuffer[ MAX_PATH ] = { 0 };
    
    		HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, PIDs[ n ] );
    		if( hProcess )
    		{
    			GetModuleFileNameEx( hProcess, NULL, szNameBuffer, sizeof( szNameBuffer ) );
    			CloseHandle( hProcess );
    		}
    
    		printf( "%u - %s\n", PIDs[ n ], szNameBuffer );
    	}
    

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/enumerating_all_modules_for_a_process.asp

    und das kann ich dann nur mit der platform sdk, weil dazu brauch ich eine "psapi.h" un die gibts nur in der P.SDK die is hier nich drauf 😞



  • Die Dateien psapi.h, psapi.lib sollten beim SDK dabei sein. Kannst auch LoadLibrary und GetProcAddress benutzen um das Nutzen zu können. NtQuerySystemInformation ist auch keine schlechte Alternative



  • NtQuerySystemInformation benötigt aber die ntdll.dll und die liegt bei NT4 leider nicht dabei.

    Frage zu SDK, wenn ich die Platform SDK hier auf dem Rechner habe, läuft das Programm dann auch auf einem Rechner ohne diese SDK?

    [edit] weil so wie es aussieht werde ich nicht drum rum kommen die platform sdk zu installieren.



  • sToRkka schrieb:

    NtQuerySystemInformation benötigt aber die ntdll.dll und die liegt bei NT4 leider nicht dabei.

    ntdll.dll ist seit nt 3.1 dabei. was du suchst ist die 'ntdll.lib'. die ist bestandteil des ddk's (nicht sdk). mit ein bisschen geduld und 'google' kann man diese lib sicher im internet irgendwo finden oder mal emule bemühen etc. ausserdem gibt es tools, die aus dll's import-libraries generieren können (ich glaub' bei borland und bei lcc ist sowas dabei). zur not gehen aber auch 'GetModuleHandle', 'GetProcAddress' und function pointers.

    ein beispiel, wie man 'NtQuerySystemInformation' ohne lib nutzt findest du hier: http://www.chapeaux-noirs.org/win/uptime.c

    btw: 'LoadLibrary' ist unnötig bei ntdll.dll, weil _jeder_ prozess die schon geladen hat.



  • sToRkka schrieb:

    Frage zu SDK, wenn ich die Platform SDK hier auf dem Rechner habe, läuft das Programm dann auch auf einem Rechner ohne diese SDK?
    weil so wie es aussieht werde ich nicht drum rum kommen die platform sdk zu installieren.

    Ja, das ist doch eigentlich auch der Normalfall - andernfalls würde ja keine Software bei Usern ohne PSDK laufen 😉
    BTW: Die Sachen die z.B. bei VC++ 6 dabei sind, sind ja auch schon Teile des SDK - nur eben veraltet 🕶



  • net schrieb:

    was du suchst ist die 'ntdll.lib'.

    ja ok die meinte ich eigentlich auch 🙄

    hab jetz glücklicher weise auch die psapi.h auf meiner msdn cd gefunden, und mit EnumProcesses geht das gut!

    DANKE! 🤡


Anmelden zum Antworten