Witam wszystkich.
Dosyć często muszę zmieniać adresy IP w ustawieniach karty sieciowej, i tak sobie pomyślałem aby napisać krótki programik, gdzie za pomocą przycisku sam będzie wypełniał te pola, ale...
Oczywiście jest mały problemik, bo za cholerę nie mogę pobrać uchwytów tych pól. Może czegoś nie wiem, lub źle robię.
Oto kodzik , który skleciłem :
var Form2 : TForm2;
hEdit1, hEdit2 : hwnd;
H1 : Cardinal;
s : string;
lpBuf : PChar;
nazwa_okna : String;
uchwyt : HWND;
implementation
{$R *.dfm}
procedure TForm2.sButton1Click(Sender: TObject);
function EnumWindowProc(uchwyt: HWnd; P: Pointer): Boolean; stdcall;
var winname, cname : array[0..144] of Char;
begin
Result := True;
GetWindowText(uchwyt, winname, 144);
GetClassName(uchwyt, cname, 144);
if (Pos(nazwa_okna, winname) > 0) then H1 := uchwyt;
end;
begin
nazwa_okna := 'Właściwości: Protokół internetowy w wersji 4 (TCP/IPv4)';
EnumWindows(@EnumWindowProc,0);
if H1 <> 0 then
begin
hEdit1 := FindWindowEx(H1, 0, 'SysTabControl32', nil);
if hEdit1 > 0 then
begin
s:= '192.168.0.0';
GetMem(lpBuf, Length(s));
try
CopyMemory(lpBuf, @s[1], Length(s));
SendMessage(hEdit1, WM_SETTEXT, 0, Longint(lpBuf));
finally
FreeMem(lpBuf);
end;
end;
end;
end;
end.
Wszelkie wskazówki mile widziane.