win32lib 'destroy_self'

new topic     » topic index » view thread      » older message » newer message

...someone recently asked for something like this ?
This win32lib program destroys itself in 2 seconds if another copy is already
running.

-- start demo --
include win32lib.ew
atom ptr, ptr2, ok, proghwnd

constant
-- new function !
zFindWindow = linkFunc(user32, "FindWindowA", {C_POINTER,C_INT},C_INT)

-- the normal win32lib main szClassName
ptr = allocate_string("Win32Lib AppWindow 1")
-- the following is this win 'title'
ptr2 = allocate_string("kick_self")
-- is this already running ?
proghwnd= c_func( zFindWindow, { ptr, ptr2 } )

constant
Win = create( Window,"kick_self",0,Default,Default,250,200,0)

procedure check_self()
-- destroy second instance, if first exists
if proghwnd != 0 then
-- just to test, lets see this instance for 2 seconds...anyways
  setVisible(Win,1)
  sleep(2)
  closeWindow(Win)
end if
end procedure

procedure goto_first_instance()
if proghwnd !=0 then
  -- set focus to first instance
  ok = c_func( xSetForegroundWindow,{proghwnd})
end if
free(ptr)
free(ptr2)
end procedure

onOpen[Win] = routine_id("check_self")
onDestroy[Win] = routine_id("goto_first_instance")

WinMain( Win, Normal )
-- end demo --

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu