Výsledky 1 až 9 z 9

Téma: Delphi - jak spustit jiný program

  1. #1

    Standardní Delphi - jak spustit jiný program

    Zdravím, řeším takový problém, že potřebuju v mé aplikaci napsané v Delphi spustit externí EXE soubor (win32) a počkat na jeho ukončení... jde to nějak?

  2. #2

    Standardní

    Můžeš volat WinExec('název exe',SW_SHOW) a potom provést něco jako todle:

    repeat
    until FindWindow(nil,'titulek externího programu')=0;
    EC5410 + Chill 400w, AMD Athlon XP 2500+@3200+, AC Copper Silent 2 (rev2), Out: AC Fan Pro TC, DFI NFII Ultra-AL nForce2 Ultra 400, 2x256MB+512MB DDR 333 CL2.5 Dual Channel, inno3D GeForce4 Ti4200-8x 128MB + AC Fan Pro TC, Seagate ST3160023A 160GB, Seagate ST360021A 60GB, Teac CD-W552E, LG SuperMulti GSA-4160B, SB Live! 5.1 Player + Audigy MOD, Windows XP Pro SP2, Karneval TURBO 2000/300

  3. #3

    Standardní

    Citace Původně odeslal Big Muscle
    Můžeš volat WinExec('název exe',SW_SHOW) a potom provést něco jako todle:

    repeat
    until FindWindow(nil,'titulek externího programu')=0;
    Díky moc! Tohle je přesně to, co jsem potřeboval. Díky!

  4. #4

    Standardní

    To je humus - vyrabas tym 100% zatazenie CPU robenim nicoho
    Osobne pouzivam toto - kedysi som to niekde vyhrabal a upravil:
    Kód:
    function ShellExec(Verb,FileName,Params,Path:PChar; Show:Word; Wait:Boolean):LongInt;
    var OK:Boolean;
        Info:TShellExecuteInfo;
    begin
      FillChar(Info,SizeOf(Info),0);
      with Info do
       begin
         cbSize:=SizeOf(Info);
         fMask:=SEE_MASK_NOCLOSEPROCESS;
         lpVerb:=Verb;
         lpFile:=FileName;
         lpParameters:=Params;
         lpDirectory:=Path;
         nShow:=show;
       end;
      OK:=Boolean(ShellExecuteEx(@Info));
      if OK then
       if wait then
        begin
          while WaitForSingleObject(Info.hProcess,100)=WAIT_TIMEOUT do Application.ProcessMessages;
          OK:=GetExitCodeProcess(Info.hProcess,DWord(Result));
        end
       else Result:=0;
      if not OK then Result:=-1;
    end;
    Pouziva sa to napriklad takto:
    Kód:
    ShellExec('open','rundll32.exe','setupapi.dll,InstallHinfSection DefaultInstall 132 L3CODEC\L3CODEC.INF','',0,TRUE)
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  5. #5

    Standardní

    2 Rainbow: hmm, zajímavé, zkusím to. Já jsem kdysi dřív ten WinExec v něčem použil, ale teď jsem si za boha nemohl vzpomenout jak to přesně bylo... ale zkusím tu tvou machrovinku, vypadá zajímavě
    Díky

  6. #6

    Standardní

    Ma to zaujimavu vlastnost - da sa s tym spustit vsetko, co sa da spustit v Shelli, napriklad dokument (spusti sa asociovany program) alebo URL (http adresa alebo link na mail).
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  7. #7

    Standardní

    Citace Původně odeslal Rainbow
    Ma to zaujimavu vlastnost - da sa s tym spustit vsetko, co sa da spustit v Shelli, napriklad dokument (spusti sa asociovany program) alebo URL (http adresa alebo link na mail).
    Jenom by mě zajímalo, jak nadefinuju ten typ TShellExecuteInfo?

  8. #8

    Standardní

    Aha, zabudol som. Do uses pridaj ShellAPI. Je to standardny unit v Delphi.
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  9. #9

    Standardní

    2 Rainbow: Jo jo, funguje to. Díky za radu!

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •