Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [delphi4]Eseguire e controllare programmi da un programma

    Salve a tutti,

    forse dal titolo nn si capisce bene, cmq questo è il mio problema:
    ho una form con dei bottoni, e vorrei ke, cliccando su un bottone si aprisse un altro programma. Fin qui niente d complicato: utilizzo ShellExecute. Però, se clicco un'altra volta sul bottone mi si apre lo stesso programma x la seconda volta, ed io invece vorrei poter controllare ke il programma precedente sia stato kiuso prima di riaprirne un altro. Come si fa?

    Spero di essermi spiegato...

    Grazie
    "Il ritmo è tutto... bisogna ascoltarlo con il cuore fino a innamorarsene aprendo la mente alla musica e rigenerandosi in profondità!"

    http://www.djandryu.com

  2. #2
    :quote:
    "Il ritmo è tutto... bisogna ascoltarlo con il cuore fino a innamorarsene aprendo la mente alla musica e rigenerandosi in profondità!"

    http://www.djandryu.com

  3. #3

  4. #4
    Grazie....

    Ho letto il link, ma nn è ke ho capito molto... :di56:

    Eppoi, mi sembra ke sia x delphi 6 ma a me serve x delphi 4...

    In pratica, vorrei soltanto controllare ke un pgm nn sia in esecuzione x avviarlo...

    "Il ritmo è tutto... bisogna ascoltarlo con il cuore fino a innamorarsene aprendo la mente alla musica e rigenerandosi in profondità!"

    http://www.djandryu.com

  5. #5
    procedure CreateWin9xProcessList(List: TstringList);
    var
    hSnapShot: THandle;
    ProcInfo: TProcessEntry32;
    begin
    if List = nil then Exit;
    hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapShot <> THandle(-1)) then
    begin
    ProcInfo.dwSize := SizeOf(ProcInfo);
    if (Process32First(hSnapshot, ProcInfo)) then
    begin
    List.Add(ProcInfo.szExeFile);
    while (Process32Next(hSnapShot, ProcInfo)) do
    List.Add(ProcInfo.szExeFile);
    end;
    CloseHandle(hSnapShot);
    end;
    end;

    function EXE_Running(FileName: string): Boolean;
    var
    i: Integer;
    MyProcList: TstringList;
    begin
    MyProcList := TStringList.Create;
    try
    CreateWin9xProcessList(MyProcList);
    Result := False;
    if MyProcList = nil then Exit;
    for i := 0 to MyProcList.Count - 1 do
    begin
    if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then
    Result := True;
    if Result then Break;
    end;
    finally
    MyProcList.Free;
    end;
    end;

    In un event hendler potresti scrivere:

    if EXE_Running('NomeFile.exe') then
    ShowMessage('NomeFile.exe in esecuzione')
    else ShowMessage('NomeFile.exe non è in esecuzione');

    Con queste 2 procedure potresti vedere se un'applicazione è eseguita o meno.

    Saluti

  6. #6
    Scusami ma sono un pò ignorantello su Delphi.....

    Nn riesco a compilarlo xkè nn mi trova TProcessEntry32, e nn riesco a trovarlo sull'Help. Ke Unit dovrei aggiungere?

    Grazie
    "Il ritmo è tutto... bisogna ascoltarlo con il cuore fino a innamorarsene aprendo la mente alla musica e rigenerandosi in profondità!"

    http://www.djandryu.com

  7. #7
    Scusami, mia mancanza:

    uses Psapi, tlhelp32;

    Saluti

  8. #8
    Grazie mille, funziona perfettamente!!!

    Con un'aggiunta xò, anzi una correzione. Ho dovuto scrivere EXE_Running('NomePgm.ex') e non .exe, poikè corrisponde al nome del pgm ke è sul Task Manager...

    Nn so xkè....

    "Il ritmo è tutto... bisogna ascoltarlo con il cuore fino a innamorarsene aprendo la mente alla musica e rigenerandosi in profondità!"

    http://www.djandryu.com

  9. #9

    shellexecute

    ciao, potreste dirmi come funziona 'shellexecute', e che uses utilizzare?
    Magari scrivendomi un codice di esempio che mi consente di aprire un programma tramite una form di Delphi...
    Grazie

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Re: shellexecute

    Originariamente inviato da carmelo81
    ciao, potreste dirmi come funziona 'shellexecute', e che uses utilizzare?
    Magari scrivendomi un codice di esempio che mi consente di aprire un programma tramite una form di Delphi...
    Non ti ho appena risposto a una domanda identica a questa?

    L'esempio di codice seguente apre il Blocco Note:
    codice:
    ShellExecute(0, nil, 'notepad.exe', nil, nil, SW_SHOWDEFAULT);
    Sostituisci notepad.exe con il percorso del file eseguibile che devi lanciare.

    Aggiungi ShellAPI alla clausola uses della unit in cui fai uso della funzione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.