Ob es möglich ist oder nicht, ist ein Kapitel. Um weiter darauf einzugehen, fehlen einfach die Infos.
Habe ich vergessen Euch entsprechende Infos zu geben ? Wenn dem so sein sollte, entschuldigt bitte.
Hier die entsprechenden Sourcecodes die ich zum testen verwende. Ich hoffe die können Euch weiterhelfen.
Mit dem folgenden Code teste ich das setzen eines DateGadgets innerhalb eines anderen Programms.
(Das Gadget wird auch gesetzt, aber ich erhalte nicht wie benötigt in diesem Programm einen entsprechenden Event.)
Code: Alles auswählen
Enumeration #PB_Compiler_EnumerationValue
#Window_0
#Listview_0
#Date_0
EndEnumeration
Procedure OpenWindow_0()
If OpenWindow(#Window_0, 0, 0, 200, 260, "Date 1.0", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
DateGadget(#Date_0, 10, 20, 180, 20, "")
ListViewGadget(#Listview_0, 10, 50, 180, 200)
EndIf
EndProcedure
OpenWindow_0()
Repeat
WindowEvent = WaitWindowEvent(50)
Select WindowEvent
Case #PB_Event_Gadget
GadgetEvent = EventGadget()
Select GadgetEvent
Case #Date_0
AddGadgetItem(#Listview_0, -1, FormatDate("%hh:%ii", Date()) + " -> Event " + Str(Counter.l))
Counter.l + 1
Case #Listview_0
Select EventType()
Case #PB_EventType_LeftDoubleClick
ClearGadgetItems(#Listview_0)
EndSelect
EndSelect
EndSelect
Until WindowEvent = #PB_Event_CloseWindow
Mit dem folgenden Code setze ich das Gadget.
Code: Alles auswählen
Global hwnd
Procedure EnumWindows(whwnd)
Protected title$ = Space(1024)
If IsWindowVisible_(whwnd)
GetWindowText_(whwnd, @title$, 1024)
If title$ = "Date 1.0"
hwnd = whwnd
EndIf
EndIf
ProcedureReturn #True
EndProcedure
Procedure Set(Day.w, Month.w, Year.w)
Protected ghwnd, phwnd, pid, sysTime.SYSTEMTIME, *mem
EnumWindows_(@EnumWindows(),#True)
If hwnd
ghwnd = FindWindowEx_(hwnd, #Null, "SysDateTimePick32", #Null)
If ghwnd
If GetWindowThreadProcessId_(ghwnd, @pid)
phwnd = OpenProcess_(#PROCESS_ALL_ACCESS, 0, pid)
If phwnd
sysTime\wYear = Year.w
sysTime\wMonth = Month.w
sysTime\wDay = Day.w
*mem = VirtualAllocEx_(phwnd, #Null, SizeOf(SYSTEMTIME), #MEM_COMMIT, #PAGE_READWRITE)
If *mem
WriteProcessMemory_(phwnd, *mem, @sysTime, SizeOf(SYSTEMTIME), #Null)
SendMessage_(ghwnd, #DTM_SETSYSTEMTIME, 0, *mem)
VirtualFreeEx_(phwnd, *mem, SizeOf(Integer), #MEM_RELEASE)
EndIf
CloseHandle_(phwnd)
EndIf
EndIf
EndIf
EndIf
EndProcedure
Set(12.09.2012)