Moving docs around
This commit is contained in:
parent
36e3f6e59e
commit
06cef55495
195
sandbox/DemiTest.py
Normal file
195
sandbox/DemiTest.py
Normal file
@ -0,0 +1,195 @@
|
||||
# GUI Application automation and testing library
|
||||
# Copyright (C) 2006 Mark Mc Mahon
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public License
|
||||
# as published by the Free Software Foundation; either version 2.1
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the
|
||||
# Free Software Foundation, Inc.,
|
||||
# 59 Temple Place,
|
||||
# Suite 330,
|
||||
# Boston, MA 02111-1307 USA
|
||||
|
||||
"""
|
||||
First of all, thanks Thomas for ctypes..
|
||||
|
||||
Hacked a bit into Henks Venster dialog class, using a different
|
||||
c-source as basis. see -> Microsoft Knowledge Base Article - 141201.
|
||||
|
||||
http://support.microsoft.com/default.aspx?scid=kb;en-us;141201
|
||||
|
||||
Out came a bit more bare bone dialog class. Though I don"t
|
||||
intend to start a win32 dialog discussion here I thought this source
|
||||
could come in quite handy.
|
||||
|
||||
|
||||
J\\xfcrgen
|
||||
|
||||
* had to reformat it tabs to spaces on the fly, using notepad,
|
||||
so I hope theres no error in there.
|
||||
|
||||
"""
|
||||
|
||||
from ctypes import windll, WINFUNCTYPE, byref, c_int as BOOL, \
|
||||
c_ulong as HWND, c_uint as UINT, c_long as LPARAM, \
|
||||
c_ushort as WORD
|
||||
|
||||
WPARAM = UINT
|
||||
|
||||
def LOWORD(dword): return dword & 0x0000ffff
|
||||
def HIWORD(dword): return dword >> 16
|
||||
|
||||
|
||||
DIALOGPROC = WINFUNCTYPE(BOOL, HWND, UINT, WPARAM, LPARAM)
|
||||
|
||||
|
||||
_user32 = windll.user32
|
||||
|
||||
WM_CLOSE = 16
|
||||
WS_CHILD = 1073741824
|
||||
WS_VISIBLE = 268435456
|
||||
#**************************************************
|
||||
|
||||
#**************************************************
|
||||
class dialog(object):
|
||||
|
||||
def __init__(self, title, exstyle, style, x, y, w, h):
|
||||
self._items = 0
|
||||
self._id = 0
|
||||
|
||||
p = [
|
||||
1, # dlgversion
|
||||
0xFFFF, # signature
|
||||
0, # LOWORD(helpId)
|
||||
0, # HIWORD(helpId)
|
||||
LOWORD(exstyle), # extendedstyle
|
||||
HIWORD(exstyle), # ...
|
||||
LOWORD(style), # style
|
||||
HIWORD(style), # ...
|
||||
0, # number of items
|
||||
x, # x
|
||||
y, # x
|
||||
w, # w
|
||||
h, # h
|
||||
0, # menu
|
||||
0, # class
|
||||
]
|
||||
|
||||
title = map(ord, unicode(title)) + [0]
|
||||
p += title
|
||||
if len(p) % 2:
|
||||
p.append(0)
|
||||
|
||||
#p.append(18)
|
||||
#p.append(700)
|
||||
#p.append(11)
|
||||
|
||||
|
||||
|
||||
self.p = p
|
||||
|
||||
def _dlgitem(self, classname, title, exstyle, style, x, y, w, h):
|
||||
self._items += 1
|
||||
self._id += 1
|
||||
|
||||
style |= WS_CHILD | WS_VISIBLE
|
||||
p = [
|
||||
0, # LOWORD(helpId)
|
||||
0, # HIWORD(helpId)
|
||||
LOWORD(exstyle), # extendedstyle
|
||||
HIWORD(exstyle), # ...
|
||||
LOWORD(style), # style
|
||||
HIWORD(style), # ...
|
||||
x, # x
|
||||
y, # y
|
||||
w, # w
|
||||
h, # h
|
||||
LOWORD(self._id), # controlId
|
||||
HIWORD(self._id) # ...
|
||||
]
|
||||
|
||||
classname = map(ord, unicode(classname)) + [0]
|
||||
p += classname
|
||||
title = map(ord, unicode(title)) + [0]
|
||||
p += title
|
||||
|
||||
if len(p) % 2:
|
||||
p.append(0)
|
||||
else:
|
||||
p += [0, 0]
|
||||
self.p += p
|
||||
|
||||
|
||||
def run_modal(self, hwnd=0):
|
||||
self.p[8] = self._items
|
||||
|
||||
self._p_template = (WORD * len(self.p))(*self.p)
|
||||
self._p_dialogproc = DIALOGPROC(self.dialogproc)
|
||||
|
||||
result = _user32.DialogBoxIndirectParamA(
|
||||
0, byref(self._p_template), hwnd, self._p_dialogproc, 0
|
||||
)
|
||||
return result
|
||||
|
||||
|
||||
def dialogproc(self, hwnd, message, wparam, lparam):
|
||||
if message==WM_CLOSE:
|
||||
_user32.EndDialog(hwnd, 0)
|
||||
return 0
|
||||
|
||||
|
||||
#************************************************
|
||||
#d = dialog("dialog sample", 0, 0, 30, 30, 160, 100)
|
||||
#d._dlgitem("button", "button1", 0, 0, 5, 5, 30, 20)
|
||||
#d._dlgitem("button", "button2", 0, 0, 5, 30, 30, 20)
|
||||
#d._dlgitem("edit", "edit box", 0, 0, 40, 0, 50, 60)
|
||||
#d._dlgitem("combobox", "",0, 0, 100, 0, 50, 65)
|
||||
#
|
||||
|
||||
import sys
|
||||
if len(sys.argv) < 2 :
|
||||
print "Please specify the XML file to read"
|
||||
sys.exit()
|
||||
|
||||
import PyDlgCheckerWrapper
|
||||
PyDlgCheckerWrapper.InitDialogFromFile(sys.argv[1])
|
||||
dlg = PyDlgCheckerWrapper.TestInfo['Dialog']
|
||||
|
||||
d = None
|
||||
|
||||
for i, ctrl in enumerate(dlg.AllControls()):
|
||||
print i
|
||||
if i == 0:
|
||||
d = dialog(
|
||||
ctrl.Text,
|
||||
0,#ctrl.ExStyle,
|
||||
0,#ctrl.Style,
|
||||
ctrl.Rectangle.left, # x
|
||||
ctrl.Rectangle.top, # y
|
||||
ctrl.Rectangle.right - ctrl.Rectangle.left, # cx
|
||||
ctrl.Rectangle.bottom - ctrl.Rectangle.top, # cy
|
||||
)
|
||||
|
||||
else:
|
||||
d._dlgitem(
|
||||
ctrl.Class,
|
||||
ctrl.Text,
|
||||
ctrl.ExStyle,
|
||||
ctrl.Style,
|
||||
ctrl.Rectangle.left, # x
|
||||
ctrl.Rectangle.top, # y
|
||||
ctrl.Rectangle.right - ctrl.Rectangle.left, # cx
|
||||
ctrl.Rectangle.bottom - ctrl.Rectangle.top, # cy
|
||||
)
|
||||
|
||||
print d
|
||||
d.run_modal()
|
||||
|
23
setup.py
23
setup.py
@ -25,7 +25,7 @@ from distutils.core import setup
|
||||
|
||||
|
||||
setup(name='pywinauto',
|
||||
version='0.1.2',
|
||||
version='0.1.3',
|
||||
description='Python library for GUI automation and testing',
|
||||
url="no url",
|
||||
author='Mark Mc Mahon',
|
||||
@ -33,24 +33,9 @@ setup(name='pywinauto',
|
||||
|
||||
packages = ["pywinauto", "pywinauto.tests", "pywinauto.controls"],
|
||||
|
||||
# py_modules=[
|
||||
# 'application',
|
||||
# 'clipboard',
|
||||
# 'controlactions',
|
||||
# 'controlproperties',
|
||||
# 'findbestmatch',
|
||||
# 'findwindows',
|
||||
# 'handleprops',
|
||||
# 'test_application',
|
||||
# 'win32defines',
|
||||
# 'win32functions',
|
||||
# 'win32structures',
|
||||
# 'XMLHelpers',
|
||||
# ],
|
||||
|
||||
# data_files=[
|
||||
# ('.', ['HISTORY.TXT', 'TODO.TXT', 'LICENSE.txt']),
|
||||
# ],
|
||||
data_files=[
|
||||
('docs', ['docs/HISTORY.TXT', 'docs/TODO.TXT', 'docs/LICENSE.txt']),
|
||||
],
|
||||
|
||||
license = "LGPL",
|
||||
classifiers=[
|
||||
|
Loading…
Reference in New Issue
Block a user