标签: pywin32

使用集成Windows身份验证(NTLM)使用Python通过Exchange进行SMTP

我想使用登录的Windows用户的凭据来验证使用NTLM到Exchange服务器的SMTP连接.

我知道python-ntlm模块和两个 为SMTP启用NTLM身份验证的补丁,但我想使用当前用户的安全令牌而不必提供用户名和密码.

使用Python和urllib2的Windows身份验证非常相似的问题.

python ntlm smtp pywin32

12
推荐指数
2
解决办法
1万
查看次数

GetWindowRect在Windows 7上太小了

我想解决的实际问题是,我想自动找出窗口周围边距的大小.如果你能找到更好的方法,请一定要回答而不是这个.

为此,我决定拍摄测试窗口的屏幕截图并测量边距.这很简单,因为我预计没有任何边缘会变成鲜艳的粉红色,但我承认这是一个黑客.我使用GetWindowRect(py)获取边界框,并使用PIL抓取屏幕截图并裁剪到边界框.问题是当裁剪操作正确时,边界框不准确.Windows 7"截图工具"获得正确的尺寸.我怎么能这样做?

python windows winapi pywin32

12
推荐指数
1
解决办法
5655
查看次数

如何使用python win32gui启用制表符和箭头键

我在主窗口中创建了几个按钮(窗口),但是Tab键和箭头键不起作用.我的研究表明,对于C++,在消息泵中使用IsDialogMessage创建了TranslateMessage/DispatchMessage的旁路,如下所示,以允许此功能:

while(GetMessage(&Msg, NULL, 0, 0))
{
    if(!IsDialogMessage(g_hToolbar, &Msg))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我正在使用python和win32gui模块来创建CreateWindows,我无法弄清楚如何绕过正常的消息捕获以允许自然处理键盘.我的代码与此类似:

from win32gui import *
from win32con import *

window_class = WNDCLASS()
hinst = window_class.hInstance = GetModuleHandle(None)
window_class.lpszClassName = 'ClassName'
window_class.style = CS_VREDRAW | CS_HREDRAW
window_class.hCursor = LoadCursor(0, IDC_ARROW)
window_class.hbrBackground = COLOR_WINDOW
window_class.lpfnWndProc = {}
classAtom = RegisterClass(window_class)

hwnd = CreateWindow(classAtom, "", WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION
                    | WS_SYSMENU | WS_MINIMIZEBOX | WS_EX_TOPMOST | WS_CLIPSIBLINGS,
                    0, 0, 140, 100, 0,  0, GetModuleHandle(None), None)
btn1_hwnd = CreateWindow("Button", "btn …
Run Code Online (Sandbox Code Playgroud)

python pywin32 win32gui

12
推荐指数
1
解决办法
772
查看次数

使用pywin32的可移植Python com服务器

是否可以在不需要提升的情况下运行comserver.

例如,我能够从Python.TestServer(下面)运行代码,但它需要提升.

Python.TestServer代码位于:从.NET使用Python COM服务器

是否可以运行不需要提升的com服务器,以便我可以在没有管理密码的情况下运行com对象.

例如

import pythoncom
from win32com.server import localserver

class demoObj(object):
    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    _reg_clsid_ = "{FA501660-8BB0-42F6-842B-A757FA3098DC}"
    _reg_desc_ = "Demo COM server"
    _reg_progid_ = "Python.Demo"
    _public_methods_ = ['hello']

def hello(self, who):
    return "Hellow " + who

localserver.serve('B83DD222-7750-413D-A9AD-01B37021B24B')
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上面的代码,但它说 pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)

如何为本地服务器创建有效的类字符串?

示例vba:

Sub demodemo()
    Set obj = CreateObject("Python.Demo")
    Debug.Print obj.Hello("World")
End Sub
Run Code Online (Sandbox Code Playgroud)

python vb.net winapi vba pywin32

12
推荐指数
1
解决办法
938
查看次数

创建一个python win32服务

我目前正在尝试使用pywin32创建win32服务.我的主要参考点是本教程:

http://code.activestate.com/recipes/551780/

我不明白的是初始化过程,因为守护进程永远不会被Daemon()直接初始化,而是我的理解它由以下内容初始化:

mydaemon = Daemon
__svc_regClass__(mydaemon, "foo", "foo display", "foo description")
__svc_install__(mydaemon)
Run Code Online (Sandbox Code Playgroud)

其中svc_install通过调用守护进程来处理初始化.init()并将一些参数传递给它.

但是,如何在不使用服务的情况下初始化守护进程对象?在我启动服务之前,我想做一些事情.有没有人有任何想法?

class Daemon(win32serviceutil.ServiceFramework):
    def __init__(self, args):
        win32serviceutil.ServiceFramework.__init__(self, args)
        self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)

    def SvcDoRun(self):
        self.run()

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def start(self):
        pass

    def stop(self):
        self.SvcStop()

    def run(self):
        pass

def __svc_install__(cls):
    win32api.SetConsoleCtrlHandler(lambda x: True, True)
    try:
        win32serviceutil.InstallService(
            cls._svc_reg_class_,
            cls._svc_name_,
            cls._svc_display_name_,
            startType = win32service.SERVICE_AUTO_START
            )
        print "Installed"
    except Exception, err:
        print str(err)

def __svc_regClass__(cls, name, display_name, description):

    #Bind the values …
Run Code Online (Sandbox Code Playgroud)

python winapi pywin32

11
推荐指数
2
解决办法
3万
查看次数

"未实现"使用pywin32控制Adobe Acrobat时出现异常

我已经使用pywin32在python中编写了一个脚本,将pdf文件保存到文本中,直到最近才能正常工作.我在Excel中使用类似的方法.代码如下:

def __pdf2Txt(self, pdf, fileformat="com.adobe.acrobat.accesstext"):
    outputLoc = os.path.dirname(pdf)
    outputLoc = os.path.join(outputLoc, os.path.splitext(os.path.basename(pdf))[0] + '.txt')

    try:
        win32com.client.gencache.EnsureModule('{E64169B3-3592-47d2-816E-602C5C13F328}', 0, 1, 1)
        adobe = win32com.client.DispatchEx('AcroExch.App')
        pdDoc = win32com.client.DispatchEx('AcroExch.PDDoc')
        pdDoc.Open(pdf)
        jObject = pdDoc.GetJSObject()
        jObject.SaveAs(outputLoc, "com.adobe.acrobat.accesstext")
    except:
        traceback.print_exc()
        return False
    finally:
        del jObject
        pdDoc.Close()
        del pdDoc
        adobe.Exit()
        del adobe
Run Code Online (Sandbox Code Playgroud)

但是这段代码突然停止工作,我得到以下输出:

Traceback (most recent call last):
  File "C:\Documents and Settings\ablishen\workspace\HooverKeyCreator\src\HooverKeyCreator.py", line 38, in __pdf2Txt
    jObject.SaveAs(outputLoc, "com.adobe.acrobat.accesstext")
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 505, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
com_error: (-2147467263, 'Not implemented', None, None)
False
Run Code Online (Sandbox Code Playgroud)

我有类似的用VB编写的代码可以正常工作,所以我猜它与COM接口没有正确绑定到适当的函数有关吗?(我的COM知识不完整).

python com acrobat pywin32 win32com

11
推荐指数
1
解决办法
2114
查看次数

用python在windows上运行os.path.islink

在带有Python 2.7的Windows 7上,如何检测路径是否为符号链接?这不起作用os.path.islink(),它说如果错误或不支持它返回false,我提供的路径肯定是一个符号链接所以我假设它不支持在Windows上?我能做什么?

python windows symlink pywin32

11
推荐指数
3
解决办法
4591
查看次数

ImportError:没有名为pywintypes的模块

我正在使用pyHook,pythoncom和Pywin32模块,用Python制作一个小型键盘记录器.这是我的代码:

import pyHook, pythoncom, sys, logging

file_log = 'C:\\important\\log.txt'

def OnKeyboardEvent (event):
    logging.basicConfig(filename=file_log, level=logging.DEBUG, format='%(message)s')
    chr(event.Ascii)
    logging.log(10, chr(Event.Ascii))
    return True
hooks_manager=pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()
Run Code Online (Sandbox Code Playgroud)

运行时,它会返回以下错误消息:

 File "C:\Python27\lib\site-packages\pythoncom.py", line 2, in <module>
    import pywintypes
ImportError: No module named pywintypes
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

python pywin32 keylogger pythoncom pyhook

11
推荐指数
3
解决办法
3万
查看次数

py2exe - 没有系统模块'pywintypes'

我正在尝试将简单的Python脚本转换为Windows可执行文件.我的setup.py脚本是:

from distutils.core import setup
import py2exe

setup(
    name = "Simple Script",
    options = {
        "py2exe": {
            "dll_excludes" : ["libmmd.dll","libifcoremd.dll","libiomp5md.dll","libzmq.dll"]
        }
    },
    console=['simple_script.py']
)
Run Code Online (Sandbox Code Playgroud)

我添加了dll_excludes,因为它们中的每一个都导致了失败.现在我遇到了一个我不能简单地排除的失败.这是错误跟踪:

Traceback (most recent call last):
  File "setup.py", line 12, in <module>
    console=['rules signed.py']
  File "C:\Anaconda\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Anaconda\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Anaconda\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 243, in run
    self._run()
  File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 306, in _run
    self.plat_finalize(mf.modules, py_files, extensions, dlls)
  File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 1157, …
Run Code Online (Sandbox Code Playgroud)

python windows pywin32 py2exe anaconda

11
推荐指数
2
解决办法
1万
查看次数

pywin32 和 pypiwin32 有什么区别?

我正在尝试自动化 Microsoft Office 应用程序,经过一些谷歌搜索后,我遇到了 pypiwin32 和 pywin32 来与 Windows 组件对象交互。我的问题是,这两个库之间有什么区别?

我尝试过谷歌搜索,但我发现的所有信息似乎都过时了。

python pywin32

11
推荐指数
1
解决办法
2989
查看次数

标签 统计

python ×10

pywin32 ×10

winapi ×3

windows ×3

acrobat ×1

anaconda ×1

com ×1

keylogger ×1

ntlm ×1

py2exe ×1

pyhook ×1

pythoncom ×1

smtp ×1

symlink ×1

vb.net ×1

vba ×1

win32com ×1

win32gui ×1