python ctypes,用参数调用user32和kernel32 func

时间:2018-01-27 09:20:24

标签: python ctypes

我需要知道在user32和kernel32函数中传递了多少个参数 例如:

windll.kernel32.GetConsoleTitle()

我收到错误:

  

:ValueError:可能在没有足够的参数(缺少4个字节)的情况下调用过程

2 个答案:

答案 0 :(得分:0)

您应该阅读API解说。这是GetConsoleTitle的链接: https://docs.microsoft.com/en-us/windows/console/getconsoletitle

DWORD WINAPI GetConsoleTitle(
  _Out_ LPTSTR lpConsoleTitle,
  _In_  DWORD  nSize
);

更新的 这是获取控制台窗口标题的简短演示:

import ctypes
MAX_BUFFER = 260
title_text_buffer = (ctypes.c_char * MAX_BUFFER)()
res = ctypes.windll.kernel32.GetConsoleTitleA(title_text_buffer, MAX_BUFFER)
title_text = title_text_buffer.value
print title_text

答案 1 :(得分:0)

Python3:

>>> import ctypes

>>> MAX_LEN = 256
>>> buffer_ = ctypes.create_unicode_buffer(MAX_LEN)
>>> ctypes.windll.kernel32.GetConsoleTitleW(buffer_, MAX_LEN)
5
>>> buffer_.value
'Command Prompt - python'