Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Laufende Programme in Schnellstartleiste scließen mit C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
05.09.2009, 21:19 Uhr
Hans
Library Walker
(Operator)


Hi,

also wie da oben schon steht ist das kein Compilerfehler, sondern ein Linkerfehler. Und bedeutet, das er die Bibliothek nicht findet. Sieh mal in den Linker-Optionen nach, da müsste sie nämlich irgendwo eingetragen werden, dann sollte es auch klappen. Wo genau kann ich aber nicht sagen, weil ich keinen C++ Builder installiert habe.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
05.09.2009, 21:26 Uhr
mkRE



Verstehe.Muss ich die dann Kopieren und dann ins Projekt schieben??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
05.09.2009, 22:46 Uhr
Hans
Library Walker
(Operator)


Nein, in den Optionen muss ein Pfad zu dem Verzeichnis (Ordner) eingetragen werden, wo diese Dateien liegen. Für den Linker sind es die *.lib Dateien.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
06.09.2009, 00:03 Uhr
mkRE



Ich hab was mit Typenbiblitheken hinzufügen gefunden die weisen direkt auf die Libs das wird es wohl sein?Denke ich?es gibt auch ein Linker menu mal schauen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: