[vbs]zapis do notatnika


(M8 R Ias0ym) #1

Mam taki skrypt, w którym chciałbym zapisać zdanie:"ala ma kota" w notatniku z ukrytym oknem tak żeby nie było nic widac.

Problem polega z 4 linijką

Dim oShell

Set oShell = WScript.CreateObject("WSCript.shell")

Call oShell.Run("NOTEPAD.EXE", 0, false)

AppActivate oShell

WScript.sleep 1000

oShell.SendKeys "ala ma kota"

WScript.sleep 1000

oShell.SendKeys "^s"  

WScript.sleep 1000

oShell.SendKeys "ala.txt"

WScript.sleep 1000

oShell.SendKeys "~"     

Set oShell = Nothing

Pisałem na postawie tych stron http://www.il.pw.edu.pl/~iap/IAPZ/vbkurs/iso2/rozkazy/sendkeys.htm

http://forum.dobreprogramy.pl/ukrywanie-okna-konsoli-t437343.html


(Tomek Matz) #2

Poniżej lekko zmodyfikowany kod, który zadziała, ale tylko przy widocznym oknie notatnika.

Dim oShell


Set oShell = WScript.CreateObject("WScript.Shell")

oShell.Run "notepad", 1, false


WScript.Sleep 10000

oShell.AppActivate "Notatnik"

WScript.Sleep 1000

oShell.SendKeys "ala ma kota"

WScript.Sleep 1000

oShell.SendKeys "^s"

WScript.Sleep 1000

oShell.SendKeys "ala.txt"

WScript.Sleep 1000

oShell.SendKeys "~"

Funkcja AppActivate pozwala na przekazanie ID uruchomionego procesu jako parametru. Być może jeśli go przekażesz, to wtedy powyższy kod zadziała także przy niewidocznym oknie notatnika. Problem w tym, że uruchamiając proces przy użyciu metody Run nie uzyskasz ID procesu. Uzyskasz go uruchamiając proces przy użyciu metody Exec. Wtedy jednak nie będziesz mógł ukryć okna notatnika. Rozwiązaniem może się okazać napisanie skryptu WMI.


(Drobok) #3

Ale tutaj pojawia się pytanie po co ci ten notatnik ? Robisz jakiś skrypt auto-logujący, a notatnik jako przykład ?

Są milion razy lepsze metody tworzenia txt. Np ta którą wyżej podał matzu :stuck_out_tongue: