Hogyan lehet átvinni a dátumot a külföldi bejelentés

Hogyan lehet átvinni egy időpontot egy másik kérelmét?

Jó napot kívánok.
A helyzet a következő: van néhány furcsa alkalmazás, amely az alkatrész DateTimePicker.V az I. komponens kell átadni a datu.Ya megtenni:
h: = FindWindow (nil, "A forma");
hd: = FindWindowEx (h, 0, "TDateTimePicker", nulla);
SendMessage (HD, WM_SETTEXT, 0, lParam (LPCTSTR (PChar ( "1981/03/23"))));
Rabotaet.Podskazhite nem ahogy kellene, pliz.

Ha úgy gondolja, hogy egy másik alkalmazás használja TDateTimePicker alkatrész (ablak osztály - DATETIMEPICK_CLASS), és a kézi fogantyú ismert, akkor egy üzenetet DTM_SETSYSTEMTIME.

var
# XA0, H: HWND; # XA0; # XA0; # XA0; # XA0; # XA0; // Handle TDateTimePicker ablakban
# XA0; ST: TSystemTime; # XA0; // dátum-idő rendszerben formátumban
kezdődik
# XA0; FillChar (ST, sizeof (ST), 0);
# XA0; ST.wDay: = 23;
# XA0; ST.wMonth: = 3;
# XA0; ST.wYear: = 1981
# XA0; SendMessage (H, DTM_SETSYSTEMTIME, GDT_VALID, Egész szám (@ST))
végén.

Abban az ablak osztály a komponens, csak „TDateTimePicker”.

De valahogy nem vettem észre, a lényeg, mert a mint az üzenet paraméter egy mutató, és küldi az üzenetet, hogy egy ablak a másik folyamat, így csak küld, hogy nem.

Ezért kérjük, ne figyeljen a [1].

Tény, hogy egy kérelem dva.V InqSoft Window Scanner mutatja SysDateTimePick32 ablak osztály, és a többi, TDateTimePicker.


> FMF # XA0; (03.08.05 10:26) [4]
> Sőt, az egyik alkalmazás dva.V InqSoft Window Scanner
> Megmutatja SysDateTimePick32 ablak osztály, és a többi, TDateTimePicker.

A probléma megoldása érdekében annak el kell osztani a másik
alkalmazás puffert és lParam üzenetét utalnak rá.
Miután az üzenet feldolgozása puffer lehet olvasni.

Most átadom ezt az utat:
h: = FindWindow (nil, "A forma");
hd: = FindWindowEx (h, 0, "TDateTimePicker", nulla);
DateTime_SetFormat (HD, PChar ( "1981/03/23"));
Továbbított szöveget néhány megmaradt kodirovke.Vopros: hogyan kell átalakítani a dátumot?

Most átadom ezt az utat:
h: = FindWindow (nil, "A forma");
hd: = FindWindowEx (h, 0, "TDateTimePicker", nulla);
DateTime_SetFormat (HD, PChar ( "1981/03/23"));
Továbbított szöveget néhány megmaradt kodirovke.Vopros: hogyan kell átalakítani a dátumot?


> FMF # XA0; (11.08.05 13:31) [7]
> Most átadom az alábbiak szerint:

Nos tudod magyarázni, hogy nem tudjuk átadni.

Ha azt szeretnénk, hogy egyszerű módon, ha úgy tetszik:

# XA0 2 az aktív területen:
# XA0; PostMessage (DateTimePicker.Handle, WM_CHAR, Ord ( "2"), 0);

# XA0, Lépés a következő mezőbe:
# XA0; PostMessage (DateTimePicker.Handle, WM_KEYDOWN, VK_RIGHT, 0);
# XA0; SendMessage (DateTimePicker.Handle, WM_KEYUP, VK_RIGHT, 0);

# XA0; aktiválásának másik alkalmazás - SetForegroundWindow.
# XA0; állítja a fókuszt a szabályozás:
# XA0; AttachThreadInput (Igaz.), Windows.SetFocus, AttachThreadInput (hamis).


> Hogy a fókuszt a vezérlő:
> # XA0; AttachThreadInput (Igaz.), Windows.SetFocus, AttachThreadInput (hamis).
- WM_SETFOCUS - felváltja a design.
By the way, most már világos, hogy miért a SetFocus művelet funkció külföldi alkalmazás nem fut.

Kapcsolódó cikkek