Stránka 1 z 2

.vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 21:32
od tux
Hoj, dělám takovou blbost a potřebuju nějak nastavit aby se otevřelo okno bez žádnejch tlačítek, jenom s textem a po vteřině zavřelo a otevřelo jiný (prostě chci udělat odpočítávání).
Jde tohle nějak příkazem MsgBox a jestli jo tak jak, jestli ne tak jakým?

A ještě když mám třeba příkaz MsgBox a chci k tomu dát parametr vbCritical (Zobrazit ikonu "Kritická zpráva") tak jak to mam udělat? Nebo jak to napsat do toho jednoho řádku?

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 21:36
od Uziv00
Tlačítko tam bude vždycky. Jinak příklad:

Kód: Vybrat vše

MsgBox "Zobrazený text", _         
           vbOKOnly + vbCritical, "Titulek okna"

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 21:44
od tux
OK dík a to odpočítávání je nějak možný? Resp. zavření aktuálního okna, hned po zavření automaticky naskočí další.

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 22:12
od Uziv00
Tak to se mi nikdy nepodařilo zjistit. Kdybys na něco přišel, zajímalo by mě to.

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 22:19
od tux
A co to je ten PROMOTIC? Jsem vyčetl že je to něco jako rozšíření vbs, je to tak? Tím by to nešlo?

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 22:43
od Uziv00
Takže ve vbs to jde vyřešit takto:

Kód: Vybrat vše

Dim objFSO
 set objFSO   = CreateObject("Scripting.FileSystemObject")
 Set objShell = CreateObject("Wscript.Shell")
 
 Wait 5, "Toto okno se zavře samo"

 Wait 5, "A tohle taky"
 
 Sub Wait(Seconds, Message)
 On Error Resume Next
 Dim objFuncShell
 If IsEmpty(objFuncShell) Then Set objFuncShell = CreateObject("wscript.shell")
 objFuncShell.Popup Message, Seconds, "Title", 16 + 4096
 End Sub
 
 set objFSO = nothing
 

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 13 črc 2011 23:54
od tux
OK dík. Ještě dotaz, pokud použju tohleto:

Kód: Vybrat vše

Set wshshell = wscript.CreateObject("WScript.Shell")
Wshshell.run "Notepad"

wscript.sleep 100
wshshell.sendkeys "a"
wscript.sleep 100
wshshell.sendkeys "b"
wscript.sleep 100
wshshell.sendkeys "c"
wscript.sleep 100
wshshell.sendkeys "d"
wscript.sleep 100
wshshell.sendkeys "e"
wscript.sleep 100
wshshell.sendkeys "f"
wscript.sleep 100
wshshell.sendkeys " g"
tak se mi ty znaky budou vytvářet vedle sebe, jak tam mam udělat to aby se to dělalo na další řádek nebo obřádek?

A ještě jak udělat že když se napíše celej ten text tak aby se notepad zavřel?
Nebo jde to nějak udělat v cmd aby to okno bylo prázdný a nebylo tam C:\Users\xxxx ? Notepad na to co dělám není zrovna ideální :D

\\edit: Pro upřesnění, vím že místo toho "Notepad" můžu použít "cmd" ale jde mi to aby tam pak nebylo tohle:
Výstřižek.JPG

ale napsal se jen ten text kterej tam chci (v tomhle případě „abcdefg“).

OT: Btw, jakýma klávesovýma zkratkama se dělaj uvozovky („“)? Run\charmap není zrovna rychlá volba :D

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 14 črc 2011 00:30
od Uziv00
K odřádkování lze použít "vbCr" - bez uvozovek.
k cmd - vzhled příkazové řádky určuje příkaz prompt. Zadáš-li např. příkaz "prompt vole" zmizí cesta i > a bude tam jen ten nápis. Musí tam ale být nějaký znak, mezeru to nevezme.
K ukončení notepadu - pošli mu alt+F4. Případně by to šlo i takto:

Kód: Vybrat vše

Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill
strComputer = "."
strProcessKill = "'notepad.exe'"

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
WSCript.Echo "Just killed process " & strProcessKill _
& " on " & strComputer

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 14 črc 2011 00:53
od tux
To prompt ani vbCr mi nejde, můžeš mi sem dát nějaký funkční příklady abych věděl kam to jak psát?
U toho ukončení notepadu, jde to nějak aby se jen to okno zavřelo a nezobrazovala se zpráva Just killed process blabla.exe.. ?

A ještě potřebuju tohle, chci zapnout tuhle funkci - nekonečný zapínání a vypínání capslocku a hned za to MsgBox kterej vyskočí hned potom co se zapne ta fce, problém je v tom že za tím capslockem se už nic neděje.


Kód: Vybrat vše

Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
Set wshShell =wscript.CreateObject("WScript.Shell")
do
wscript.sleep 100
wshshell.sendkeys "{CAPSLOCK}"
loop

MsgBox "blablabla"


A potom ještě něco, ty vbs scripty nějak nejdou s ICQ - pořád se přepíná do popředí. Je nějakej příkaz aby se hned na začátku toho scriptu ICQ vyplo? (něco jako "kill C:\Program files\ICQ\ICQ.exe")

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 14 črc 2011 08:52
od Uziv00
Předpokládám, že prompt ti nejde přes skript. Pak bude problém v tom, že příkazový řádek není úplně platná aplikace windows. Pokud jde aspoň psaní do řádku, zkus místo vbCr předat escape sekvenci. trošku googli člověče :-)
Zprávu odstraníš zaremováním, nebo vymazáním řádku s WScript.Echo
A k tomu poslednímu - pochopitelně. Jestliže program uvrhneš do nekonečné smyčky obsluhující CapsLock a zprávu až za tuto smyčku, těžko můžeš čekat že z ní intuitivně vyskočí aby ti ji vypsal.

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 14 črc 2011 11:19
od tux
To zavření okna mi nějak nešlo ale vyřešil jsem to takhle:

Kód: Vybrat vše

strComputer = "."
strProcessToKill = "program.exe"

Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" _
   & strComputer & "\root\cimv2")

Set colProcess = objWMIService.ExecQuery _
   ("Select * from Win32_Process Where Name = '" & strProcessToKill & "'")

count = 0
For Each objProcess in colProcess
   objProcess.Terminate()
   count = count + 1
Next


- je tam vlatně jenom smazanej ten začátek.

K tomu CapsLocku, nejde třeba udělat že by ta smyčka běžela a mezitím se spustily další příkazy, něco jako příkaz vbNew objekt? :D

Re: .vbs - zavření okna MsgBox, kam napsat parametry příkazu

Napsal: 14 črc 2011 19:39
od Uziv00
Ten kód je stejný. Problém vidím v tom, že ještě neznáš syntaxi vbs.
Řádek lze totiž rozdělit podtržítkem na dva, takže zápis:
WSCript.Echo "Just killed process " & strProcessKill _
& " on " & strComputer
je stejný jako:
WSCript.Echo "Just killed process " & strProcessKill & " on " & strComputer
Nekonečná smyčka:
buď napíšeš kód tak, že vše bude uvnitř smyčky, nebo budeš muset na smyčku mít zvlášť skript.

--- Doplnění předchozího příspěvku (14 Črc 2011 19:49) ---

A k tomu cmd:
mě to normálně chodí i na vbCr. V tom případě lze k ukončení použít příkaz exit a potvdit vbCr, příkazový řádek se pak ukončí.