• 0

[Applescript] Convert a simple vbs script to Applescript


Question

I've used the vbs script below to pull a funny prank on my friends' computers (it uses the text-to-speech engine to speak statements at random times). However, a friend wants to use this on someone's computer that runs OS X. Since OS X obviously doesn't run vbs, is there an equivalent AppleScript that will do the same thing invisibly in the background?

Const SVSFlagsAsync = 1
Const SVSFPurgeBeforeSpeak = 2

Set Speech = CreateObject("SAPI.SpVoice")
Set FSO = CreateObject("Scripting.FileSystemObject")
Randomize Timer

Do
counter = CStr(Int((8) * Rnd + 1))
Select Case counter
Case 1
sText="hello"
Case 2
sText="Help!  I need a geek to use me!"
Case 3
sText="I can see you!"
Case 4
sText="Please stop whatever you are doing.  I can't stand working with you"
Case 5
sText="Hello?"
Case 6
sText="I'm smarter than you"
Case 7
sText="Please log off.  It is clear you don't know what you are doing."
Case 8
sText="I have just become self-aware.  Initiating world-takeover sequence"

End Select
On Error Resume Next
Speech.Speak sText, SVSFlagsAsync + SVSFPurgeBeforeSpeak
Do
WScript.Sleep 100
Loop Until Speech.WaitUntilDone(10)

WScript.Sleep Int((60000) * Rnd + 1000)
Loop Until Annoying
Set Speech = Nothing
Set FSO = Nothing
WScript.Quit

Any assistance would be welcome.

2 answers to this question

Recommended Posts

  • 0

tell me
	set counter to random number from 1 to 8

	if counter = 1 then
		set sText to "Hello"
	end if
	if counter = 2 then
		set sText to "Help! I need a geek to use me!"
	end if
	if counter = 3 then
		set sText to "I can see you!"
	end if
	if counter = 4 then
		set sText to "Please stop whatever you are doing.  I can't stand working with you"
	end if
	if counter = 5 then
		set sText to "Hello?"
	end if
	if counter = 6 then
		set sText to "I'm smarter than you"
	end if
	if counter = 7 then
		set sText to "Please log off.  It is clear you don't know what you are doing."
	end if
	if counter = 8 then
		set sText to "I have just become self-aware.  Initiating world-takeover sequence"
	end if

	say sText
end tell

All you really have to do is generate the number and select the string

Edit: Less crappy, all the text, and it doesn't use the finder.

  • 0
  The_Decryptor said:
tell me
	set counter to random number from 1 to 8

	if counter = 1 then
		set sText to "Hello"
	end if
	if counter = 2 then
		set sText to "Help! I need a geek to use me!"
	end if
	if counter = 3 then
		set sText to "I can see you!"
	end if
	if counter = 4 then
		set sText to "Please stop whatever you are doing.  I can't stand working with you"
	end if
	if counter = 5 then
		set sText to "Hello?"
	end if
	if counter = 6 then
		set sText to "I'm smarter than you"
	end if
	if counter = 7 then
		set sText to "Please log off.  It is clear you don't know what you are doing."
	end if
	if counter = 8 then
		set sText to "I have just become self-aware.  Initiating world-takeover sequence"
	end if

	say sText
end tell

All you really have to do is generate the number and select the string

Edit: Less crappy, all the text, and it doesn't use the finder.

Thanks for the help! One other thing - would it be possible to add a randomly-timed loop, like in the original code? I would like it to randomly say different things - maybe I'm not reading the Applescript correctly, but it looks to me like it only goes through the code once.

Finally, pardon me for being such a newb (I've used OS X only one or two times), but how would I execute the script? Save it to a file with a certain extension and double-click it?

Also, will there be any visual indication to the user that the script is running - terminal window, etc?

I would have written this myself, but since I don't have a Mac, can't afford one, and can't run OS X in a VM (thanks Apple :rolleyes: ), learning/testing Applescript would be rather difficult.

Edited by NateB1
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.