If you have a moment – Thanks.
FUGURE1
Shell = newobject –com WScript.Shell
[void] $shell.Run(“calc”)
Start-sleep 1
If ($shell.AppActivate(“Calculator”))
{
“Calculator activated…”
Start-sleep 1
$shell.SendKeys(“10{+}”)
Start-sleep 1
$shell.SendKeys(“15”)
Start-sleep 1
$shell.SendKeys(“~”)
Start-sleep 1
$shell.SendKeys(“%F4”)
}
FIGURE2
Shell = newobject –com WScript.Shell
[void] $shell.Run(“cmd”)
Start-sleep 1
If ($shell.AppActivate(“cmd”))
{
“cmd activated…”
Start-sleep 1
$shell.SendKeys(“delete c:\temp\jess\*.*”)
Start-sleep 1
$shell.SendKeys(“~”)
Start-sleep 1
$shell.SendKeys(“y”)
Start-sleep
$shell.SendKeys(“~”)
Start-sleep 1
$shell.SendKeys(“exit”)
}
FIGURE2 doesn't work because the AppActivate methos expects the cmd window
title. On my machine it's
invoked with the path of system32 in the title. Updating the AppActivate
argument runs the script without a problem.
You can also unify some keystrokes:
$shell = new-object –com wscript.shell
[void] $shell.Run("cmd")
Start-sleep 1
If ($shell.AppActivate("c:\windows\system32"))
{
Start-sleep 1
$shell.SendKeys("del c:\scripts\temp\*.*~")
Start-sleep 1
$shell.SendKeys("y~")
Start-sleep 1
$shell.SendKeys("exit~")
}
Keep in mind that this is not a secure method, it'll most likely fail most
of he time due to the delete operation time length and the sleep intervals.
Why don't you delete the files with remove-item:
dir c:\scripts\temp\*.* | remove-item -force
-----
Shay Levi
$cript Fanatic
http://scriptolog.blogspot.com
it will probably do what you want with out dropping back to the VBScript
objects
--
Richard Siddaway
Please note that all scripts are supplied "as is" and with no warranty
Blog: http://richardsiddaway.spaces.live.com/
PowerShell User Group: http://www.get-psuguk.org.uk
But none worked. Here is my exact code with how I believe it should work.
$shell = new-object –com wscript.shell
[void] $shell.Run("cmd")
Start-sleep 2
If ($shell.AppActivate("C:\Windows\System32"))
{
Start-sleep 2
$shell.SendKeys("dir~")
Start-sleep 2
$shell.SendKeys("y~")
Start-sleep 2
$shell.SendKeys("exit~")
#$shell.SendKeys("%{F4}")
}
Thanks,
$AppName = "My Unique Command Prompt Name"
$Shell = new-object -comobject WScript.Shell
[void] $shell.Run("cmd /k title " + $AppName, 1, $False)
$AppReady = $false
# Loop until you find the your app
while($AppReady -eq $False)
{
Start-Sleep 1
$AppReady = $shell.AppActivate($AppName)
}
If ($shell.AppActivate($AppName))
{
Write-Host "Found"
Start-sleep 1
$shell.SendKeys("ipconfig")
$shell.SendKeys("~")
$shell.SendKeys("exit")
Start-sleep 3
$shell.SendKeys("~")
}
else{Write-Host "App not found"}
"jm" <j...@discussions.microsoft.com> wrote in message
news:4B1D0469-9E25-490B...@microsoft.com...
>I can pass text to calc or notepad, but the same is not true for cmd or
> winword i.e. FIGURE1(calc) works perfect. FIGURE2(cmd) is a no go. Well
> it
> does at least open a command window or winword but will pass NO text.
>
> If you have a moment - Thanks.
>
> FUGURE1
> Shell = newobject -com WScript.Shell
> [void] $shell.Run("calc")
>
> Start-sleep 1
> If ($shell.AppActivate("Calculator"))
> {
> "Calculator activated."
> Start-sleep 1
> $shell.SendKeys("10{+}")
> Start-sleep 1
> $shell.SendKeys("15")
> Start-sleep 1
> $shell.SendKeys("~")
> Start-sleep 1
> $shell.SendKeys("%F4")
> }
>
> FIGURE2
> Shell = newobject -com WScript.Shell
> [void] $shell.Run("cmd")
>
> Start-sleep 1
> If ($shell.AppActivate("cmd"))
> {
> "cmd activated."
Automating CMD can be very tricky. If your command has a PowerShell or even
VBScript version then I would use it.
Nonetheless, try to be more specific, what is your end goal?