zabránit dvojitému(současnému) spuštění programu

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
petrofff
Level 2
Level 2
Příspěvky: 190
Registrován: 07 dub 2008 07:16
Bydliště: Ostrava-Zábřeh

zabránit dvojitému(současnému) spuštění programu

Příspěvek od petrofff »

HOTKEY spouští VBS skript, který během dvou vteřin odešle aplikaci sekvenci kláves.zkratek (=macro)
Bohužel při delším stisku HOTKEY se opakovaně spustí tentýž proces => dříve než 1. doběhl do konce
Z kláves vznikne "guláš", je tedy nutné mu v tom zabránit postupem:

Kód: Vybrat vše

if <test: NeníToPoprvé> then Quit
<nastav: NeníToPoprvé>
příkazový blok = sendkey1, sleep 50, sendkey2, sleep 50, ...atd
<nuluj: NeníToPoprvé>
[/size]
Zkusil jsem použít jako příznak <NeníToPoprvé> atribut hidden spouštěného skriptu:
=> funguje ale chtěl bych řešení bez zápisu na disk (quli zpomalení závislém na akt.používání HDD)

Napadl mě způsob: <test: NeníToPoprvé?> = <projdi všemi procesy, je tam wscript.exe víc než 1x ?>
[+] Nastav/Nuluj se nepoužije. Lze realizovat jako VBS
[−] Není funkční, pokud zrovna někde běží wscript.exe !!!
Byl by použitelný po modifikaci (není problém použít VB místo VBS), tj. pokud lze proces nějak identifikovat, že je to ten náš
...nešlo by to podle titulku okna ??? ( myslím že změnit titulek si běžící aplikace umí )

Klidně použiju jakékoli jiné řešení (kromě spouštění nějaké utility z disku => zpomalení)
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: zabránit dvojitému(současnému) spuštění programu

Příspěvek od CZechBoY »

ani jsem to skoro nečetl, ale: k zvýraznění CODE(programováního jazyku) použij SYNTAX BBCode(úplně vpravo mezi BBCode) pak tam ještě dej lang=jazyk
k problému:
zkus dát na začátek if(spusteno<>1) then spusteno=1 ....tvůj kód.. konec
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
petrofff
Level 2
Level 2
Příspěvky: 190
Registrován: 07 dub 2008 07:16
Bydliště: Ostrava-Zábřeh

Re: zabránit dvojitému(současnému) spuštění programu

Příspěvek od petrofff »

To CZechBoY:
1. V TAGu [cоde] nemám zdroják, jde o meta-jazyk (opravdu nejde o problém se syntaxí)
2. Jediný zdrojový kód, kterým můžu posloužit, je současný skript VBS [syntax lang=vb]. Dík za upozornění - fajn funkce
[syntax lang=vb]'~~~~~~~~~~~~~ VSTUP DO KRITICKÉ SEKCE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim fso
Dim act
Set fso = CreateObject("Scripting.FileSystemObject")
Set act = fso.GetFile(WScript.ScriptFullName)
if act.Attributes and 2 then WScript.Quit         ' if <test:NeníToPoprvé> then Quit  
act.Attributes = act.Attributes or 2              '    <nastav:NeníToPoprvé>

'~~~~~~~~~~~~~ ZASÍLÁNÍ KLÁVES APLIKACI OPERA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set shell = WScript.CreateObject("WScript.Shell")
shell.AppActivate("opWindow")   ' Opera -> fokus
 WScript.Sleep 100
shell.SendKeys "{F7}"           'Zajistí skrytí panelů:       
 WScript.Sleep 50
shell.SendKeys "{ESC}"
 WScript.Sleep 50
  . . . . .  
     atd.
'~~~~~~~~~~~~ VÝSTUP Z KRITICKÉ SEKCE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
act.Attributes = (act.Attributes or 2) - 2         ' <nuluj:NeníToPoprvé>
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[/syntax]
Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: 04 led 2007 19:19
Bydliště: Vysočina

Re: zabránit dvojitému(současnému) spuštění programu

Příspěvek od Sender »

Nevím jeká je podpora winAPI,ale ve vyšších programovacích jazycích se to obvykle řeší funkcemi CreateMutex, CreateSemaphore,FindWindow a další.
http://msdn.microsoft.com/en-us/library ... S.85).aspx
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jak odstranit bílý pruh nad maximalizovaným oknem programu?
    od Minapark » » v Windows 11, 10, 8...
    0 Odpovědi
    10969 Zobrazení
    Poslední příspěvek od Minapark
  • Spuštění PC
    od Elbeckho » » v Problémy s hardwarem
    11 Odpovědi
    12405 Zobrazení
    Poslední příspěvek od Kminek
  • Chybová hláška your device ran into a problem and needs to restart při spuštění pc
    od nevim1050 » » v Vše ostatní (hw)
    15 Odpovědi
    101719 Zobrazení
    Poslední příspěvek od nevim1050

Zpět na „Programování a tvorba webu“