ionic
8/6/2007 4:09:00 PM
Jesli tego nie wiesz, to zakladam, ¿e klikasz uzywajac SendMessage :)
To jest bardzo zle podejscie do sprawy. Polecam cos bardziej praktycznego:
Znajac HWND kontrolki html, zdobadz IHTMLDocument3 i operuj tym pointerem dokladnie tak, jak w js. IHTMLDocument* to odpowiednik
'document' w javascript.
document.getElementById("autologin").checked=true; // w c++ napiszemy
IHTMLDocument2 *doc;
// hwnd to okno klasy "Internet Explorer_Server"
// thread powinien uprzednio CoInitialize()
if (!GetDocument(IID_IHTMLDocument3, hwnd, (void**)&doc))
{
....if (SetCheckbox(doc, L"autologin", VARIANT_TRUE)) failed();
....doc->Release();
}
HRESULT SetCheckbox(IHTMLDocument3 *doc, LPWSTR wszId, VARIANT_BOOL bChecked)
{
....HRESULT hr = E_FAIL;
....BSTR bstrName=SysAllocString(wszId); // nullcheck!!
....IHTMLElement *e;
....if (!doc->getElementById(bstrName, &e))
....{
.......IHTMLInputElement *input;
.......if (!e->QueryInterface(IID_IHTMLInputElement , (void**)&input))
.......{
..........hr = input->put_checked(bChecked);
..........input->Release();
.......}
.......e->Release();
....} else NieMaTakiegoNumeru();
....SysFreeString(bstrName);
....return hr
}
HRESULT GetDocument(IID *pIID, HWND hwnd, void **ppDoc)
{
....DWORD dwResult = 0;
....SendMessageTimeout(hwnd, WM_HTML_GETOBJECT, 0, 0, SMTO_ABORTIFHUNG, 10000, &dwResult);
....return ObjectFromLresult(dwResult, pIID, 0, ppDoc);
}