Borland Builder 5 findet _stricmp() nicht



  • Hallo leute habe ein Problem will dieses Programm unten Starten dabei habe ich diese fehlermeldung

    [Linker Fehler] Unresolved external '_stricmp(const char *, const char *)' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\UWINAPI2.OBJ

    Am Programm ist eigentlich alles richtig was findet mein Cmpiler nicht wisst ihr das vielleicht??bzw. warum kennt er die Funktion _stricmp() nicht?

    ich arbeite mit Windows XP SP3

    Bitte hilft mir wenn ihr könnt war schon bei WinApi die arbeiten auch noch dran.

    //---------------------------------------------------------------------------

    #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);
    }



  • Warum hast du diese Frage eigentlich in allen verfügbaren Foren gepostet?



  • Hallo weil ich teiweise auf andre FAQ verwiesen worden bin mein meine Fehler beinhalten Probleme für die verschiedene FAQs deswegen auch. 🙂


Log in to reply