DOS Console im Hintergrund



  • Kannst du überhaupt schon C programmieren? An einigen Stellen ist es ja _total_ falsch.



  • Me.hWnd ist doch kein zulässiger name für eine variable! du kannst bei ShellExecute für den 1.Parameter auch einfach NULL übergeben



  • C programmieren 🙄

    also ich bin noch Anfänger ^^ aber ich wills mal können 🙂

    Bin gerad beim Buch C++ für Dummies *g* auf Seite 105.

    Naja nichts desto trotz möcht ich das Programm gerne fertig haben da es ja einen nutzen für mich hat.

    Wo sind denn meine Fehler?

    MFG
    WAR][FIRE



  • #include <iostream>
    #include <cstdlib>
    #include <windows.h>
    #include <ctime>
    
    int WinMain(::HINSTANCE__* hInstance, ::HINSTANCE__* hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	int		nEnd	= 0;
    	bool	bOn		= 0;
    	int		nPingResult;
    	int		nBreak	= 120000;
    
    	while(true)
    	{
    		::POINT ptCursor;
    		::POINT ptNewCursor;
    		::GetCursorPos(&ptCursor);
    		::Sleep(nBreak);
    		::GetCursorPos(&ptNewCursor);
    
    		if(ptCursor.x == ptNewCursor.x && ptCursor.y == ptNewCursor.y)
    		{
    			nPingResult = system("ping -n 1 -w 0 192.168.1.12");
    			if(nPingResult == 0 && bOn == true)
    			{
    				// system("pskill Azureus.exe");
    				%COMSPEC% /c pskill Azureus.exe; // was soll das sein?!
    				bOn		= false;
    				nBreak	= 120000;
    			}
    
    			if(nPingResult == 1 && bOn == false)
    			{
    				if((::ShellExecute(NULL, "open", "D:\\programme\\Azureus\\Azureus.exe", 0, 0, SW_HIDE)) > 32)
    				{
                        bOn		= true;
    					nBreak	= 6000;
    				}
    				else
    				{
    					std::cout << "FEHLER: Das Programm konnte nicht geoeffnet werden!" << std::endl;
    					bOn		= false;
    					nBreak	= 120000;
    				}
    
    			}
    		}
    		else
    		{
    			//system("pskill Azureus.exe");
    			%COMSPEC% /c pskill Azureus.exe; // Was soll das sein?!
    			nBreak = 120000;
    		} 
    	}
    
    	getch();
    
        return 0;
    }
    


  • boah könnt ihr mal diesen "::HINSTANCE__* hInstance" lassen. Dafür gibt es keinen grund außer man steht darauf seinen source code unnötig aufzublähen, hässlicher und nunnützer zu machen...



  • Spieleprogrammierer eben...



  • pskill ist ein Programm. Dies fügt in die Console weitere Befehle hinzu.

    es reagiert auf den Befehl pskill

    Dahinter dann den Namen des Prozesses. Also pskill Azureus.exe .
    Diesen Prozess killt er dann wie im Taskmanager "Prozess beenden".

    Oder gibt es einen Befehl in C der Prozesse schließen kann?

    MFG
    WAR][FIRE



  • sende dem Azureus fenster doch eine WM_CLOSE nachricht, dein pskill schiesst es ja bestimmt auch einfach ab. wenn du es radikal abschiessen willst kannst du TerminateProcess verwenden allerdings ist davon abzuraten.



  • Wie darf denn so ein WM_CLOSE Befehl aussehen wenn er Azureus.exe schließen soll?

    Ich mein der WM_CLOSE Befehl mal als ganzes beispiel wie man ihn auch in den Compiler einfügt.



  • Hi, brauchste die Funktion SendMessage. Du brauchst aber das Handle von deinem Azureus damit SendMessage weiss wo er die Nachricht hinschicken soll, das Handle holste dir mit FindWindow.

    Hier Bsp.:

    HANDLE DeinWindow; // is klar nä?
    
    DeinWindow = FindWindow( "Die ClassID", "Was in der Titelleiste steht" );
    if( DeinWindow == NULL )
    {
            printf("Sorry, jabisch jetz grad nisch jefunden!\n");
            system("PAUSE"); //Damit dus lesen kannst
            return 1; //Leider fehlgeschlagen :d
    }
    
    if( SendMessage((HWND)DeinWindow, WM_CLOSE, 0, 0)==0 )
            return 1;
    
    // Geklabbed? JOP!
    return 0;
    

    So ungefähr. ⚠

    Bisch dänne, nä?
    Der Kettenraucher


Anmelden zum Antworten