193
193
def _exit_if_running(options):
195
195
system = platform.system()
196
if system == 'Windows':
196
if system == 'Linux':
197
_exit_if_running_linux(options)
198
elif system == 'Windows':
197
199
_exit_if_running_win32(options)
202
def _exit_if_running_linux(options):
201
205
import dbus.mainloop.glib
234
238
def _exit_if_running_win32(options):
235
239
from win32gui import FindWindow
236
240
from win32api import SendMessage
240
243
handle = FindWindow("elisa_win32_message_window", "Win32 message window")
244
247
if len(options['files']) > 0:
247
249
from ctypes import Structure, POINTER, byref, c_void_p, c_char, sizeof, cast
248
from ctypes.wintypes import ULONG, DWORD
250
from ctypes.wintypes import ULONG
251
from mswin32.structures import COPYDATASTRUCT
250
ops = ' '.join(options['files'])
253
command_line = ' '.join(options['files'])
252
255
class COMMANDLINEDATA(Structure):
254
("data", c_char * len(ops)),
257
class COPYDATASTRUCT(Structure):
259
("dwData", POINTER(ULONG)),
261
("lpData", c_void_p),
257
("data", c_char * len(command_line)),
264
260
commandlinedata = COMMANDLINEDATA()
265
commandlinedata.data = ops
261
commandlinedata.data = command_line
266
262
copydata = COPYDATASTRUCT()
267
263
COMMAND_LINE = POINTER(ULONG)()
268
264
COMMAND_LINE.value = 1
269
265
copydata.dwData = COMMAND_LINE
270
266
copydata.cbData = sizeof(commandlinedata)
271
267
copydata.lpData = cast(byref(commandlinedata), c_void_p)
268
from win32con import WM_COPYDATA
272
269
SendMessage(handle, WM_COPYDATA, 0, copydata)
274
271
print 'Elisa is already running, exiting'
278
275
_setup_environment()