import win32api
import win32gui
import win32con

import struct
import array

def findWindows():
    ret = []
    sdi = win32api.RegisterWindowMessage("SciTEDirectorInterface")
    w = win32gui.GetWindow(win32gui.GetDesktopWindow(), win32con.GW_CHILD)
    while w:
        res = win32gui.SendMessage(w, sdi, 0, 0)
        if res == sdi:
            ret.append(w)
        w = win32gui.GetWindow(w, win32con.GW_HWNDNEXT)

    return ret

def sendCommand(w, message):
    CopyDataStruct = "IIP"
    char_buffer = array.array('c', message)
    char_buffer_address = char_buffer.buffer_info()[0]
    char_buffer_size = char_buffer.buffer_info()[1]
    cds = struct.pack(CopyDataStruct, 0, char_buffer_size, char_buffer_address)
    win32gui.SendMessage(w, win32con.WM_COPYDATA, 0, cds)