Nur eine Anwendung aktiv



  • Hallo,

    ich habe ein Programm (mit BCB5 geschrieben), und so lange dieses Aktiv (gestartet) ist, soll es sein, andere Anwendungen zu starten.

    Es soll also z.B. nicht möglich sein, während mein Programm läuft, Word oder Solitär... zu öffnen.

    Gibt es eine Möglichkeit dies zu erreichen ?

    Besten Dank schon mal für eure Hilfe.



  • Hi,

    Sicherlich ist es über Hook zum Beispiel möglich. Auch kannst du ständig die aktiven Anwendungen überprüfen.

    Seriös hört sich die Frage aber nicht an....



  • hi,

    ...sehr unseriös...

    mfg
    m



  • Die Sache ist aber absolut seriös.

    Ich möchte damit verhindern, dass solange diese Anwendung läuft, irgendwelchen anderen Programme diese Anwendung stören.

    Hat also nichts mit Virus..... zutun.

    Könntest du mir die Sache mit Hook etwas genauer erklären ?

    DANKE



  • mit dem borland c++ builder viren schreiben ? ich glaub da treibt einer spass mit mir 🙂

    du könntest ja mit nem timer .. und ner funktion die prozess pids abfragen ... wenn eine höher wie der eigene prozess pid ist soll er beendet werden ...



  • Nach Hooks fragst/suchst du lieber in WinApi Forum



  • die pid kill function

    void __fastcall TFormMain::SpeedButton1Click(TObject *Sender)
    {
       try {
       AnsiString str;
       char *tmp;
       int i;
       i= ListBox1->ItemIndex;
       if( i != -1){
          AnsiString s;
          tmp = new char[100];
          s=ListBox1->Items->Strings[i];
          strcpy(tmp,(char*)s.c_str());
          tmp=strtok(tmp,"\t");
       }
       int id=atoi(tmp);
       delete[] tmp;
       HANDLE ps = OpenProcess(1,false,id);
       if(ps){
          if(!TerminateProcess(ps,-9)){
             ShowMessage((AnsiString)"Could not end process specified!");
          }
          else{
             ShowMessage((AnsiString)"Process successfully terminated!");
          }
       }
       else{
          ShowMessage((AnsiString)"Could not open process requested!");
       }
       }
       catch(Exception &e)
       {
        ShowMessage("Please select a PID");
       }
    }
    

    die pid function ...

    bool __stdcall EnumProc(HWND hWnd,/*LPARAM*/long/*lp*/)
    {
       unsigned long* pPid;   //LPDWORD
       unsigned long result;      //DWORD
       void *hg;                  //HGLOBAL
       unsigned long id;
    
       if(hWnd==NULL)
          return false;
    
       hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
       pPid = (unsigned long *)GlobalLock(hg);
    
       result = GetWindowThreadProcessId(hWnd,pPid);
    
       if(result){
          char title[110];
          char className[95];
          char totalStr[256];
          GetClassName(hWnd,className,95);
          GetWindowText(hWnd,title,110);
          id=*pPid;
          ultoa(id,totalStr,10);
          strcat(totalStr,"\t");
          if(title){
             strcat(totalStr,title);
             strcat(totalStr,"\t");
          }
          strcat(totalStr,className);
          FormMain->ListBox1->Items->Add((AnsiString)totalStr);
       }
       else{
          GlobalUnlock(hg);
          GlobalFree(hg);
          return false;
       }
       GlobalUnlock(hg);
       GlobalFree(hg);
       return true;
    }
    

Anmelden zum Antworten