Cum de a transfera o dată în cererea străină

Cum de a transfera o dată într-o altă aplicație a lui?

Bună ziua.
Situația este aceasta: există unele aplicații ciudate care are tipul de componentă DateTimePicker.V componenta am nevoie pentru a transfera datu.Ya mele face acest lucru:
h: = FindWindow (zero, "Forma");
hd: = FindWindowEx (h, 0, "TDateTimePicker" zero);
SendMessage (hd, WM_SETTEXT, 0, lParam (LPCTSTR (PChar ( "23.03.1981"))));
Rabotaet.Podskazhite nu așa cum ar trebui, pliz.

Dacă credeți că într-o altă aplicație se folosește componenta TDateTimePicker (clasa ferestrei - DATETIMEPICK_CLASS), iar mânerul său este cunoscut, puteți utiliza un mesaj DTM_SETSYSTEMTIME.

var
# XA0; H: HWND; # XA0; # XA0; # XA0; # XA0; # XA0; // fereastra TDateTimePicker mâner
# XA0; ST: TSystemTime; # XA0; // data-ora în formatul de sistem
începe
# 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, Integer (@ST))
end.

La clasa fereastra componentei, doar, „TDateTimePicker“.

Dar într-un fel nu am realizat lucrul cel mai important: deoarece ca parametru mesaj este un pointer, iar mesajul este trimis într-o fereastră a unui alt proces, astfel încât pur și simplu trimite-l să nu reușească.

Prin urmare, vă rugăm să nu acorde atenție la [1].

De fapt, o aplicație dva.V InqSoft fereastra scanerului prezinta clasa ferestrei SysDateTimePick32, iar cealaltă-TDateTimePicker.


> FMF # XA0; (03.08.05 10:26) [4]
> De fapt, o aplicație dva.V InqSoft fereastra Scanner
> Afișează clasa ferestrei SysDateTimePick32, iar cealaltă-TDateTimePicker.

Pentru a rezolva problema acestora să fie distribuite într-un alt
tampon de aplicare și posturi lParam se referă la ea.
După procesarea tamponul mesaj poate fi citit.

Acum am trece în acest fel:
h: = FindWindow (zero, "Forma");
hd: = FindWindowEx (h, 0, "TDateTimePicker" zero);
DateTime_SetFormat (hd, PChar ( "23.03.1981"));
Textul transmis în unele kodirovke.Vopros la stânga: cum de a converti o dată?

Acum am trece în acest fel:
h: = FindWindow (zero, "Forma");
hd: = FindWindowEx (h, 0, "TDateTimePicker" zero);
DateTime_SetFormat (hd, PChar ( "23.03.1981"));
Textul transmis în unele kodirovke.Vopros la stânga: cum de a converti o dată?


> FMF # XA0; (11.08.05 13:31) [7]
> Acum trec după cum urmează:

Ei bine, vă explicați că nu putem trece.

Dacă doriți într-un mod simplu, dacă vă rog:

# XA0; 2 în câmpul activ:
# XA0; PostMessage (DateTimePicker.Handle, WM_CHAR, Ord ( "2"), 0);

# XA0; Mutare la câmpul următor:
# XA0; PostMessage (DateTimePicker.Handle, WM_KEYDOWN, VK_RIGHT, 0);
# XA0; SendMessage (DateTimePicker.Handle, WM_KEYUP, VK_RIGHT, 0);

# XA0; pentru activarea altei cereri - SetForegroundWindow.
# XA0; Pentru a seta focalizarea la control:
# XA0; AttachThreadInput, Windows.SetFocus, AttachThreadInput (Adevărat.) (Fals.)


> Pentru a seta focalizarea la control:
> # XA0; AttachThreadInput, Windows.SetFocus, AttachThreadInput (Adevărat.) (Fals.)
- WM_SETFOCUS - inlocuieste acest design.
Apropo, este acum clar pentru mine de ce funcția setfocus pentru aplicare externă nu se execută.