M
habe dieses Beispiel im netz gefunden bloss es wird nicht ganz Compiliert bekomme diese Fehlermeldung bzw Linker Meldung:
[Linker Fehler] Unresolved external '_stricmp(const char *, const char *)' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\UWINAPI2.OBJ
ich glaube wenn ich dein Beispiel halbwegs zum laufen bekomme werd ich solch eine ähnliche Meldung zum schluß haben.
Oh man wenn alles nur so einfach währe wie SPS Technik
//---------------------------------------------------------------------------
#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 *Buffer,const char *szPfadMitExe);
//---------------------------------------------------------------------------
__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);
}