Přepínání/spuštění dvou aplikací Promotic na jednom PC

Toto je hlavní technické fórum pro diskusi o problémech při vytváření PROMOTIC aplikací a jejich řešení.

Přepínání/spuštění dvou aplikací Promotic na jednom PC

Postby mace » Mon 29. Jul 2019 15:54:26

Zdravím, z historických důvodů běží na jednom PC dvě samostatné aplikace Promotic. V samotném spuštění a provozu aplikací není problém. Chtěl bych zajistit přes tlačítko v liště, aby se dalo z jedné aplikace přepínat do druhé aplikace pokud již běží nebo by spustila a následně maximalizovala (pro obě aplikace).
Pro spuštení a přepínání používám skript který byl měl přes OtherAppOper zjistit zda běří druhá aplikace a pokud ne pak by ji měl spustit pomocí ShellExecute. Druhá aplikace má v horní liště skutečně název "Ledová voda".
Skript se chová tak, že vždy dojde k zavolání ShellExecute bez ohledu, zda aplikace běží nebo ne. Pokus o druhé spuštění aplikace Promotic pak způsobí chybové hlášení "Aplikaci nelze spustit protože běží nebo není soubor dostupný".

dim bOper
bOper = Pm.OtherAppOper (3, "Ledová voda", 11)
pm.Debug "bOper:" & bOper
if NOT bOper then
Pm.ShellExecute "open", "C:\Projekty_PM\xxx.pra", "", "C:\Projekty_PM\", 3
end if

Jak lze jinak zajistit funkci spuštění / přepnutí obou aplikací mezi sebou.

Díky.
mace
 
Posts: 5
Joined: Wed 03. Jul 2019 8:45:05

Re: Přepínání/spuštění dvou aplikací Promotic na jednom PC

Postby Tomáš Bräuer » Tue 30. Jul 2019 7:02:11

Dobrý den,
díval jsem se do implementace funkce Pm.OtherAppOper v 8.3 i 9.0 a jsem si jistý, že vrací True, pokud funkce najde cílové okno a False, pokud nenajde.
Pokud vám funkce okno nenajde, musí vrátit False. Mohla tam dříve být chyba.
Váš postup je myslím správný a měl by fungovat.
Nezmínil jste, ve které verzi pracujete?
Tomáš Bräuer
Administrátor
 
Posts: 129
Joined: Thu 13. Dec 2012 9:13:13

Re: Přepínání/spuštění dvou aplikací Promotic na jednom PC

Postby mace » Tue 30. Jul 2019 15:18:17

Aplikace je napsaná ve verzi 8.1.13. Bohužel se mi zdá, že funkce Pm.OtherAppOper nic nevrací, protože v debugu se objevuje prázdný řetězec tedy pouze text "bOper:".
Podle chování aplikce se pak vždy provádí podmínka if, tedy zavolání spuštění programu.
mace
 
Posts: 5
Joined: Wed 03. Jul 2019 8:45:05

Re: Přepínání/spuštění dvou aplikací Promotic na jednom PC

Postby Tomáš Bräuer » Thu 01. Aug 2019 7:21:20

Tak bohužel, informaci o tom, zda cílové okno existuje nebo ne funkce začala vracet až v 8.3.19 a samozřejmě ve verzi 9.0, kdy to bylo nahlášeno jako chyba. Do dřívějších verzí se oprava nepřenášela a navíc ani starší verze už nebyly generovány.
Budete muset buď použít nový PROMOTIC (asi nereálné) nebo najít jiný postup.
Musíte zjistit, zda PROMOTIC aplikace běží. Napadají mě 2 rychlá řešení.
1) PRA soubor s aplikací je po celou dobu DT i RT otevřený pro zápis, takže selže i operace čtení (Pm.FileBinaryRead). V l bude buď 0 nebo velikost souboru v bajtech.
Code: Select all
dim l, a
l = Pm.FileBinaryRead("Test.pra", 0, 1, a)
Pm.Debug l

2) V app.ini v sekci [Promotic] v položce Running je buď 0 nebo 1, jako příznak, zda daná aplikace běží. Metoda by byla nepřesná pouze po pádu aplikace, kdy v INI zůstane 1, jinak to funguje.
Code: Select all
dim r
r = Pm.IniFileRead("Test.ini", "Promotic", "Running", 0, 3)
Pm.Debug r

Nebo můžete řešit problém externím skriptem nebo programem.
Tomáš Bräuer
Administrátor
 
Posts: 129
Joined: Thu 13. Dec 2012 9:13:13

Re: Přepínání/spuštění dvou aplikací Promotic na jednom PC

Postby mace » Wed 07. Aug 2019 8:24:58

Zdravím, tak nakonec elegantně vyřešeno skriptem/aplikací externě pomocí AutoIt.
mace
 
Posts: 5
Joined: Wed 03. Jul 2019 8:45:05


Return to Nevím jak...

Who is online

Users browsing this forum: No registered users and 0 guests

cron