Automatisches schließen von Programmen(Problem)



  • Also ich hab ein kleines Problem und hoffe ihr könnt mir weiterhelfen,
    ich habe ein Programm geschrieben, das andere Programme schließen soll doch es funktionier leider nicht.

    #include "windows.h"
    #include "time.h"
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	time_t Zeitstempel;
        tm * nun;
        Zeitstempel = time(0);
        nun = localtime(&Zeitstempel);
    
    	HWND hWnd;
    
    	int min = 0;
    	int hou = 0;
    
    	while(true)
    	{
    		hWnd = FindWindow(NULL, static_cast<LPCSTR>("Unbenannt - Editor"));
    
    		if(hWnd)
    		{
    			min = nun->tm_min;
    			hou = nun->tm_hour;
    
    			while((hou) == nun->tm_hour && (min + 1) == nun->tm_min)
    			{
    				if(!hWnd)
    					continue;
    				else
    				{
    					SendMessage(hWnd, WM_CLOSE, NULL, NULL);
    					MessageBox(NULL, static_cast<LPCSTR>("Programm beendet"), static_cast<LPCSTR>("Achtung"), NULL);
    				}
    			}
    		}
    	}
    	return 0;
    }
    


  • hab es schon gelöst nicht perfekt aber es funktioniert

    #include "windows.h"
    #include "time.h"
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	HWND hWnd;
    
    	time_t Zeit;
    	tm * nun;
    	Zeit = time(0);
    	nun = localtime(&Zeit);
    
    	int min = 0;
    	int hou = 0;
    
    	while(true)
    	{
    		hWnd = FindWindow(NULL, static_cast<LPCSTR>("Unbenannt - Editor"));
    
    			if(hWnd)
    			{
    			min = nun->tm_min;
    			hou = nun->tm_hour;
    			}
    
    			while(hWnd)
    			{
    				Zeit = time(0);
    				nun = localtime(&Zeit);
    
    				if(nun->tm_hour >= (hou) && nun->tm_min >= (min + 1))
    				{
    				SendMessage(hWnd, WM_CLOSE, NULL, NULL);
    				MessageBox(NULL, static_cast<LPCSTR>("Programm beendet"), static_cast<LPCSTR>("Achtung"), NULL);
    				hWnd = 0;
    				}
    			}
    
    	}
    	return 0;
    }
    


  • Was sollen denn die "static_cast<LPCSTR>" in Deinem Code!?
    Ersetze das lieber mal durch _T...



  • Visual C++ Express meckert dann rum wenn ich es mit L versuche



  • Da es sich um ein String Literal handelt musst Du, wie von Martin schon erwähnt, _T("") benutzen. Dein Projekt ist offensichtlich nicht Unicode, desshalb funktioniert auch L"" nicht.

    Simon

    Edit: Hast Du eigentlich Martins Post gar nicht gelesen???



  • Doch hab mein Projekt jetzt auf UNICODE umgeschalten und es wieder mit L versucht funktioniert einwandfrei 🙂

    Außerdem wollte ich wissen wie man ein Fenster, ohne den Fensternamen zu wissen, in HWND einbinden kann.



  • andrewla1990 schrieb:

    Doch hab mein Projekt jetzt auf UNICODE umgeschalten und es wieder mit L versucht

    Warum machst Du das, wenn Dir hier zweimal empfohlen wird, _T("") zu benutzen?



  • _T() ist schirch.
    Verwende keinen Unicode und fertig. Braucht man eh meist nicht.



  • unicode is bei solchen programmen (und bei fast allen anderen die keine
    textverarbtung haben) käse, MessageBoxA und ruhe is. ohne optionen ändern



  • hab das mit _T("") schon probiert, es funktionieren alle varianten und ich kenne keine vor oder nachteile bei einer dieser lösungen.


Anmelden zum Antworten