I have written small code that would interact with minimized minecraft window, but WM_KEYUP and WM_KEYDOWN functions work similar. I mean WM_KEYUP works same way.
import time
from time import sleep
import win32gui, win32ui, win32con, win32api
VK_KEY_W = 0x57
VK_KEY_A = 0x41
VK_KEY_S = 0x53
VK_KEY_D = 0x44
VK_KEY_P = 0x50
VK_SHIFT = 0xA0
VK_ESCAPE = 0x1B
def main():
window_name = "Minecraft 1.8.9"
hwnd = win32gui.FindWindow(None, window_name)
# hwnd = get_inner_windows(hwnd)['RICHEDIT50W']
win = win32ui.CreateWindowFromHandle(hwnd)
#win.SendMessage(win32con.WM_CHAR, ord('A'), 0)
#win.SendMessage(win32con.WM_CHAR, ord('B'), 0)
#win.SendMessage(win32con.WM_KEYDOWN, 0x1E, 0)
#sleep(0.5)
#win.SendMessage(win32con.WM_KEYUP, 0x1E, 0)
#win32api.SendMessage(hwnd, win32con.WM_KEYDOWN, VK_KEY_S, 1)
#time.sleep(1)
#win32api.SendMessage(hwnd, win32con.WM_KEYUP, VK_KEY_S, 0)
#time.sleep(1)
time.sleep(1)
win32api.SendMessage(hwnd, win32con.WM_IME_KEYDOWN, VK_KEY_W, 0)
time.sleep(1)
win32api.SendMessage(hwnd, win32con.WM_IME_KEYUP, VK_KEY_W, 0)
# win32api.SendMessage(hwnd, win32con.WM_KEYDOWN, VK_ESCAPE, 0)
# sleep(0.5)
# win32api.SendMessage(hwnd, win32con.WM_KEYUP, VK_ESCAPE, 0)
# sleep(1)
# win.SendMessage(win32con.WM_CHAR, ord('A'), 0)
def list_window_names():
def winEnumHandler(hwnd, ctx):
if win32gui.IsWindowVisible(hwnd):
print(hex(hwnd), '"' + win32gui.GetWindowText(hwnd) + '"')
win32gui.EnumWindows(winEnumHandler, None)
def get_inner_windows(whndl):
def callback(hwnd, hwnds):
if win32gui.IsWindowVisible(hwnd) and win32gui.IsWindowEnabled(hwnd):
hwnds[win32gui.GetClassName(hwnd)] = hwnd
return True
hwnds = {}
win32gui.EnumChildWindows(whndl, callback, hwnds)
return hwnds
main()
```
time.sleep(1)
win32api.SendMessage(hwnd, win32con.WM_IME_KEYDOWN, VK_KEY_W, 0)
time.sleep(1)
win32api.SendMessage(hwnd, win32con.WM_IME_KEYUP, VK_KEY_W, 0)
These four lines.
I will be happy with help!
I tried postmessage too,but result was exactly same. May be this is a problem with minecraft