Здравствуйте, Smarty, Вы писали:
S>Здравствуйте, Ростик, Вы писали:
Р>>Р>> InternetSetOption( 0, 50, ref ci, 4 ) ;
Р>>
Р>>По моему, бред
Помогите.
S>А по-моему нет. Маршаллинг струтур посредством ref — общепринятая практика. А что — не катит?
S>P.S. Делаю упор на структуру, полагая что с интами-dword-ами вопросов нет? Но кстати, о птичках, DWORD соотв. 32-bit unsigned integer(он же System.UInt32, он же uint) — см. "Platform Invoke Data Types" в МСДНе.
Спасибо — работает вот в таком виде:
//Some internet options
public const uint INTERNET_STATE_CONNECTED = 1;
public const uint INTERNET_OPTION_CONNECTED_STATE = 50;
[StructLayout(LayoutKind.Sequential)]
public struct INTERNET_CONNECTED_INFO
{
public uint dwConnectedState;
public uint dwFlags;
}
[DllImport("wininet.dll", EntryPoint="InternetSetOptionA", CharSet=CharSet.Ansi)]
private extern static bool InternetSetOption(int hInternet,
uint dwOption,
ref INTERNET_CONNECTED_INFO lpBuffer,
uint dwBufferLength
);
private void button2_Click(object sender, System.EventArgs e)
{
INTERNET_CONNECTED_INFO ci = new INTERNET_CONNECTED_INFO();
ci.dwConnectedState = INTERNET_STATE_CONNECTED;
InternetSetOption(0,
INTERNET_OPTION_CONNECTED_STATE,
ref ci,
(uint)System.Runtime.InteropServices.Marshal.SizeOf(ci));
}