GetWindowText()



  • Hallo leute ich habe mich den ganzen Tag durchs Internet und hier gewühlt um ein Funktionierendes Programm zu basteln um alle fensternamen herauszufinden.Den Code habe ich herausgefunden auf einer Seite :

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    ListBox1->Clear();
    EnumWindows((WNDENUMPROC)ShowAllWindows,0);
    }

    BOOL CALLBACK ShowAllWindows(HWND hwnd,LPARAM lParam)
    {
    char pcWinTitle[256];

    if(!GetWindow(hwnd, GW_OWNER))
    {
    GetWindowText(hwnd, pcWinTitle, 255);
    //mach was mit dem Titel ->durchsuchen o.a.

    if(AnsiString(pcWinTitle).Trim() != EmptyStr)
    Form1 -> ListBox1 -> Items -> Add(pcWinTitle);

    }
    return true;

    }

    So jetzt werden mir zwar alle laufenden fensternamen angezeigt jetzt weiß ich nicht wie ich mein gesuchtes Fenster Herausfinde und es dann schließen kann.

    Es geht mir mehr um Fenster die in der Schnellstartleite versteckt sind.

    Andere fenster kann ich schon schließen halt nur die die feste fensternamen haben.
    Das geht ja mit FindWindow() und SendMessage().

    Habt ihr paar tipps evtl einen guten code??

    ich verzwefle mit den Schnellstart Fenstern!!!



  • Die Anwendungen, die in der Schnellstartleiste verknüpft sind, sind ja nicht unbedingt gestartet (das sind nur Links). Insofern kannste da nix schließen. Ich vermute, du meinst eher das System Tray (die kleinen Icons rechts auf der Taskleiste)?



  • Hi Mathe ja genau ich meinte eher die icons rechts unten.

    gibts da eine möglichkeit??


  • Mod

    Nö. Evtl. sind das z.B. auch nur kleine Frontends wie bei Virenscannern. Der Service, dessen Status sie anzeigen haben mit dem Icon nix zu tun.



  • Hi,

    hat zwar jetzt nur bedingt was damit zu tun, aber kann man iwie herausfinden welches Icon zu welcher Anwendung gehoert bzw welche Anwendungen ein Icon erstellt haben!?

    Peace C0de4Fun



  • Bei mir ist das VNC Server der im Hintergrund läuft und als Icon wie z.B. Zone Alarm unten angezeigt wird mit Rechtsklick auf das Icon kann ich beenden nur mein Ziel ist es diesen über ein Button zu schließen.

    Ich habe vor einem Bekannten einen Fernwartungs Service einzubauen er ist etwas älter und somit schwer für ihn manchmal was einfaches zu öffnen somit habe ich Ihm jetzt Teilprogramm geschrieben als GUI mit dem BorlandC++Builder5 das er die Benötigten Exe öffnet wie den VNC Service und DynDNS Updater das Klappt auch ich kann auch den Updater schließen nur wenn er als Fenster angezeigt wird mit FindWindows() und SendMessage() bloß dann bleiben mir die beiden Icons unten rechts stehen das möchte ich nicht weil er so quasi immer online ist für VNC-Viewer o.ä.

    P.S.
    Die VNC Viewer Service Modi öffnet sich als CMD Fenster nicht als Typisches Windows Fenster.



  • du must die processliste durchlaufen (Process32First, Process32Next),
    dort steht jede exe die auf dem pc gestartet ist.

    suche dann in der PROCESSENTRY32 Strucktur nach der exe die du schließen willst (szExeFile), wenn du sie gefunden hast, holst du dir die ID des Processes (th32ProcessID).
    mit der ProcessId kannst du dir via OpenProcess ein Handle auf den Process besorgen und mit TerminateProcess den Process beenden.



  • Hast du evtl ein Programm Beispiel?bzw Strukturbeispiel?



  • i'm druken 🙄
    morgen wieder



  • Klasse find ich super von dir!!

    🙂



  • Zum Bleispiel:

    void ListProcesses()
    {
    	void* snapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	PROCESSENTRY32 processEntry = { sizeof(PROCESSENTRY32) };
    
    	if(Process32First(snapshotHandle, &processEntry))
    	{
    		do
    		{
    			std::cout << processEntry.szExeFile << std::endl;
    		}
    		while(Process32Next(snapshotHandle, &processEntry));
    	}
    
    	CloseHandle(snapshotHandle);
    }
    

    Wahahr doch jetzt einefach, nichet?



  • Hallo,
    wenn ich bei der Texteingabe die Sprache ändere, dann stellt sich die Sprache nach jeder eingegebenen Zeile automatisch auf Deutsch um.
    Wie kann ich diese Umstellung verhindern?



  • ums zu vervollständigen

    BOOL EndProcess(LPTSTR lpszTargetProcess)
    {
        HANDLE snapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        PROCESSENTRY32 processEntry;
        processEntry.dwSize = sizeof(PROCESSENTRY32);
    
        if(Process32First(snapshotHandle, &processEntry))
        {
            do
            {
    	if(strcmpi(processEntry.szExeFile, lpszTargetProcess) == 0)
    	{
    		HANDLE hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,processEntry.th32ProcessID);
    		TerminateProcess(hProcess,NULL);
    		CloseHandle(hProcess);
    		CloseHandle(snapshotHandle);
    		return TRUE;
    	}
    
            }
            while(Process32Next(snapshotHandle, &processEntry));
        }
    
        CloseHandle(snapshotHandle);
        return FALSE;
    }
    


  • Leute ich versuchs Heute abend hab momentan noch viel zu tun ergenisse bekommt ihr natürlich hier gepostet 🙂 echt Klasse von euch!!!

    Ich hab letzte Woche angefangen mit der WinAPI geschichte es fängt langsam an Spaß zu machen 🙂 hab auch schon mit andren Funktionen Experimente durchgeführt echt geil!!!:-)

    Gibts da ein Buch was Ihr einem Empfehlen könntet??





  • wo meinst du den wo ich diese Funktion einsetzen kann??
    ich will das ganze ja über einen Button schließen.

    szExeFile ist das meine gesuchte exe??hast du das etwas von meinen vorherigen Bsp verändert??



  • EndProcess() übergibst du den .exe Namen, der geschlossen werden soll.



  • verstehe jetzt nicht.
    soll ich die exe dem lpszTargetProcess übergeben??



  • ich verstehs schneller wenn dus mir nacheinender erklären würdest soll ich die exe als text oder als wert übergeben??



  • Den Namen der exe übergeben, die geschlossen werden soll.

    EndProcess("explorer.exe");

    Du siehst doch, der Paramenter ist "lpszTargetProcess" und der wird dann mit "szExeFile" verglichen.

    if(strcmpi(processEntry.szExeFile, lpszTargetProcess)
    ...

    http://msdn.microsoft.com/en-us/library/ms684839(VS.85).aspx

    MSDN schrieb:

    zExeFile
    The name of the executable file for the process.


Anmelden zum Antworten