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

petrofff
Level 2
Level 2
Příspěvky: 190
Registrován: duben 08
Bydliště: Ostrava-Zábřeh
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod petrofff » 08 bře 2010 10:19

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é>

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í)

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 08 bře 2010 14:39

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: duben 08
Bydliště: Ostrava-Zábřeh
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod petrofff » 09 bře 2010 09:55

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: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Sender » 09 bře 2010 22:27

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/ms682411(VS.85).aspx


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Panely otevřených programů na hlavním panelu Příloha(y)
    od Prorock » 20 říj 2024 15:00 » v Windows 11, 10, 8...
    28
    7888
    od Prorock Zobrazit poslední příspěvek
    02 lis 2024 13:41
  • Spuštění PC Příloha(y)
    od Elbeckho » 21 úno 2025 14:27 » v Problémy s hardwarem
    11
    4523
    od Kminek Zobrazit poslední příspěvek
    23 úno 2025 02:14
  • Nedetekován signál (černá obrazovka) při spuštění PC
    od zerbngr » 01 črc 2024 17:37 » v Problémy s hardwarem
    13
    4612
    od petr22 Zobrazit poslední příspěvek
    03 črc 2024 10:36

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host