Keresés

Új hozzászólás Aktív témák

  • brd

    nagyúr

    válasz Istyu74 #30912 üzenetére

    Azt favágó módon úgy lehet megoldani, hogy kicsit várni kell (pl. timeout parancs) az első exe indítása után, annyit, hogy biztosan elinduljon, és megjelenjen az ablaka. Az elindulást simán lehet parancssori eszközökkel figyelni, utóbbi pedig problémás (bár azt is), mert még az is lehet, hogy megjelenik az ablak, de csak később ragadja magához a fókuszt, így hiába figyeled az ablak létét, az kevés. De próbáld ki:

    Csak az exe-re parancssori figyelés:

    start egyikprogram.exe
    :futeaprogram
    tasklist /fi "imagename eq egyikprogram.exe"|find "egyikprogram.exe" >nul
    if "%errorlevel%"=="0" goto :masikprograminditasa
    goto :futeaprogram
    :masikprograminditasa
    timeout 5 >nul
    masikprogram.exe
    taskkill /f /im "egyikprogram.exe"

    Ha az ablak létét akarod figyelni:

    start egyikprogram.exe
    :futeaprogram
    tasklist /v /fi "imagename eq egyikprogram.exe" /nh|find "ablakfejlec"
    if "%errorlevel%"=="0" goto :masikprograminditasa
    goto :futeaprogram
    :masikprograminditasa
    timeout 5 >nul
    masikprogram.exe
    taskkill /f /im "egyikprogram.exe"

    A vastagított részeket írd át a te exe-id nevére. Írtam 5 másodperces várakozást is bele (timeout sor), annyi a legtöbb esetben elég, és a Windows általános működéséhez képest nem túl sok eltérést fogsz tapasztalni.

    Az ablak fejlécét a

    tasklist /v /fi "imagename eq egyikprogram.exe" /nh

    paranccsal tudod lekérdezni, ahol az időpont utáni space után jön az fejléc, amit a 3. sorban tudsz figyelni, like módon, azaz elég, ha tartalmazza, már illeszkedni fog. Pl. az Operám adatai lekérdezve:

    opera.exe 7812 Console 1 1 912 704 K Running domain\user 13:11:00 RIOS: Hozzászólás írása - Téma: Milyen program, ami...? - Opera

    Ebből a fejléc a RIOS: Hozzászólás írása - Téma: Milyen program, ami...? - Opera

    Ha így figyeled, hogy tasklist /v /fi "imagename eq opera.exe" /nh|find "RIOS", akkor abban az esetben illeszkedik, ha az opera.exe nevű folyamatnak az ablakfejlécében benne van, hogy RIOS (a példában tehát igen). Az ékezetekkel vigyázni, nem próbáltam, lehet, hogy ott végre kell hajtanod egy kódlapkonveziót.
    Remélem, érthető lett. :D

    Gondban egyedül akkor vagy, ha a masikprogram.exe azonnal visszaadja a vezérlést. Ekkor kicsit másképpen kell megközelíteni a problémát. Ja' meg akkor is, ha az ablak vizsgálatát csinálod, és az egyikprogram.exe le szokott fagyni indulás után, és nem jeleníti meg az ablakát, mert ekkor a .bat "végtelen" ciklusba kerül (addig, ameddig az ablak meg nem jelenik). Pár sörért azt is leírhatom, hogy ekkor se kerüljön végtelen ciklusba, hanem mondjuk fél perc várakozás után lépjen ki, vagy indítsa el a másikprogram.exe-t.

  • zone

    őstag

    válasz Istyu74 #30912 üzenetére

    Akkor egyszerűbben, az indítás:
    - létrehozol egy üres txt fájlt, pl. jatek1.txt, megnyitod
    - bemásolod a fenti 3 sort
    - a két start utáni részt átírod, hogy a két programodra mutasson (ha van szóköz az elérési útvonalban, akkor idézőjelbe kell tenni, pl. c:\"Program Files (x86)\Steam\Steam.exe")
    - elmented, utána a txt kiterjesztést átírod bat-ra
    - ha ezt a jatek1.bat fájlt elindítod, a beleírt összes programot elindítja

Új hozzászólás Aktív témák