Форум сайта python.su
Привет всем!!!
Есть сервер Windows 2003 на нем настроен сервер терминалов и установлен Radmin и есть еще SSHd. Хочу чтобы при заходе браузером на страничку запускался скрипт, который бы запускал Radmin, проходил авторизацию, делал принтскрин и слаживал мне все это в папку. В принципе накодил такой, не доконца, до веб странички еще не добрался, и этот скрипт работает только при условии что запущен сеанс, а вот если подключиться через ssh и пнуть его, то не получается снять принскин, экзепшн вываливается, ну оно то и понятно, окна то нет. Как пофиксить или может есть какие другие пути решения?
Код скрипта:
import win32gui, win32ui, win32process, win32com.client
import os
import subprocess
import errno
import time
import sys
import win32api
import win32com.client
def get_screen(path):
hwnd = win32gui.GetDesktopWindow()
l,t,r,b = win32gui.GetWindowRect(hwnd)
h = b-t
w = r-l
hDC = win32gui.GetWindowDC(hwnd)
myDC = win32ui.CreateDCFromHandle(hDC)
newDC = myDC.CreateCompatibleDC()
myBitMap = win32ui.CreateBitmap()
myBitMap.CreateCompatibleBitmap(myDC, w, h)
newDC.SelectObject(myBitMap)
newDC.BitBlt((0,0),(w, h) , myDC, (0,0), win32con.SRCCOPY)
myBitMap.Paint(newDC)
myBitMap.SaveBitmapFile(newDC, path)
def radmin_auth(password, delay):
shell = win32com.client.Dispatch("WScript.Shell")
#shell.AppActivate("remote")
#win32api.Sleep(1000)
time.sleep(1)
shell.SendKeys(password)
shell.SendKeys("{TAB}")
time.sleep(1)
shell.SendKeys("{ENTER}")
time.sleep(delay)
#==========================================================
if __name__ == "__main__":
bankomat_name = { 'aaa:1' }
bankomat_ip = ['1.1.1.1]
bankomat_pass = ['123']
bankomat_delay = [3, ]
bankomat_photo = [ 'atmb1701.bmp' ]
try:
bankomat = sys.argv[1]
number = bankomat_name[bankomat]
except:
print "enter bankomat number"
sys.exit(1)
photo_path = "C:\\temp\\atmb\\"
path = "\"C:\\Program Files\\Radmin\\radmin.exe \" /connect:" + bankomat_ip[number] + ":4899 /noinput /fullscreen"
proc = subprocess.Popen(path)
time.sleep(1)
radmin_auth(bankomat_pass[number], bankomat_delay[number])
try:
get_screen(photo_path+bankomat_photo[number])
except:
print "can't get printscreen"
time.sleep(1)
proc.terminate()
Отредактировано (Май 21, 2009 18:08:35)
Офлайн