home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / plugins / digsbyipcaction / ipc.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  2.3 KB  |  64 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import config
  5. if config.platform == 'win':
  6.     import win32events as win
  7.     import ctypes
  8.     import wx
  9.     hidden_frame = None
  10.     receiver = None
  11.     WINDOW_CLASS = 'wxWindowClassNR'
  12.     RECEIVER_GUID = '60210be0-de97-11de-8a39-0800200c9a66'
  13.     MESSAGE_GUID = '7e01e6f0-de99-11de-8a39-0800200c9a66'
  14.     WM_COPYDATA = 74
  15.     
  16.     class COPYDATASTRUCT(ctypes.Structure):
  17.         _fields_ = [
  18.             ('dwData', ctypes.wintypes.DWORD),
  19.             ('cbData', ctypes.wintypes.DWORD),
  20.             ('lpData', ctypes.c_void_p)]
  21.  
  22.     
  23.     def listen(receiver_cb):
  24.         global receiver, hidden_frame
  25.         if hidden_frame is not None:
  26.             hidden_frame.Destroy()
  27.         
  28.         receiver = receiver_cb
  29.         hidden_frame = wx.Frame(None, title = RECEIVER_GUID)
  30.         win.bindwin32(hidden_frame, WM_COPYDATA, on_copydata)
  31.  
  32.     
  33.     def on_copydata(hWnd, msg, wParam, lParam):
  34.         if receiver is not None and lParam:
  35.             cds = COPYDATASTRUCT.from_address(lParam)
  36.             if cds.dwData == hash(MESSAGE_GUID):
  37.                 message = ctypes.string_at(cds.lpData, cds.cbData - 1)
  38.                 receiver(message)
  39.             
  40.         
  41.  
  42.     
  43.     def send_message(message):
  44.         hwnd = ctypes.windll.user32.FindWindowA(WINDOW_CLASS, RECEIVER_GUID)
  45.         if not hwnd:
  46.             return False
  47.         sender_hwnd = 0
  48.         buf = ctypes.create_string_buffer(message)
  49.         copydata = COPYDATASTRUCT()
  50.         copydata.dwData = hash(MESSAGE_GUID)
  51.         copydata.cbData = buf._length_
  52.         copydata.lpData = ctypes.cast(buf, ctypes.c_void_p)
  53.         return ctypes.windll.user32.SendMessageA(hwnd, WM_COPYDATA, sender_hwnd, ctypes.byref(copydata))
  54.  
  55. else:
  56.     
  57.     def listen(receiver_cb):
  58.         pass
  59.  
  60.     
  61.     def send_message(message):
  62.         pass
  63.  
  64.