010
05.09.2009, 19:35 Uhr
mkRE
|
Ich nochmal habe das jetzt im Netz gefunden und einige Fehler aussortiert so.Der Timer1 ist von mir der rest bis auf paar verbesserungen kopiert.
Nun Compiliert wird das ganze jetzt mit einem übrigen fehler der nennt sich so:
[Linker Fehler] Unresolved external '_stricmp(const char *, const char *)' referenced from C: \PROGRAMME\BORLAND\CBUILDER5\PROJECTS\UWINAPI2.OBJ
Es geht um die _stricmp() im hier soll angeblich eine user32.h und user32.lib eingebunden werden ich finde in meinen LIBS zwar die user32 die habe ich in mein Projekt hinein Kopiert. So nun wenn ich #include <user.h> eingebe sagt der Compiler mir er kennt den Header nicht habs mit verschiedenen schreibweisen des Wortes USER ausprobiert ohne Erfolg. In meinen Borland Builder Ordnern find ich die Header Datei auch nicht was soll ich machen???
Krieg nen Heulkrampf vielleicht ist das ja hier schon die Lösung für mein Problem??
C++: |
#include <vcl.h> #pragma hdrstop #include <Psapi.h>
#include "UWinApi2.h" #include <string.h> #include <winuser.h> #include <windows.h>
//--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;
void GetPathFromHandle(HWND hWnd, LPTSTR szPathFromHandle); BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam); int _stricmp( const char *string1,const char *string2);
//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) { Timer1->Enabled=true; } //---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) { EnumWindows((WNDENUMPROC)EnumProc, NULL); } //---------------------------------------------------------------------------
BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam) { // // Jetzt haben wir ein HWND irgendeines Fensters // Also holen wir uns den Pfad zur zugehörigen EXE // char Buffer[MAX_PATH]; char szPfadMitExe[]="c:\Windows\NotePad.exe"; ZeroMemory(Buffer, sizeof(Buffer)); // Buffer leer machen... GetPathFromHandle(hwnd, Buffer); if (_stricmp(Buffer, szPfadMitExe)==NULL) { // // _stricmp vergleich 2 strings miteinander // wobei es GROSS- und kleinschreibung // komplett ignoriert! // Oha, es MUSS notepad.exe sein! // Also beenden wir es mal... // SendMessage(hwnd, WM_CLOSE, NULL, NULL); return FALSE; // FALSE = EnumWindows kann aufhören } else return TRUE; // TRUE = weitermachen, Notepad ja noch nicht drangewesen! }
void GetPathFromHandle(HWND hWnd, LPTSTR szPathFromHandle) { // // benötigt psapi.lib und psapi.h!!! // läuft nur unter NT-basierenden Windows // Also WinNT, Win2000, WinXP! // DWORD lpdwProcessId; HANDLE hProcessHandle;
GetWindowThreadProcessId(hWnd, &lpdwProcessId); hProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, TRUE, lpdwProcessId); GetModuleFileNameEx(hProcessHandle, NULL, szPathFromHandle, MAX_PATH); CloseHandle(hProcessHandle); }
|
Bearbeitung von Hans: |
cpp-Tags eingefügt; - demnächst bitte selbr machen.
|
Dieser Post wurde am 05.09.2009 um 21:20 Uhr von Hans editiert. |