У меня есть следующий код:
Код: Выделить всё
[UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)]
delegate int ConnectDelegate(IntPtr socket, IntPtr sockaddr, int namelen);
[DllImport("ws2_32.dll", SetLastError = true, EntryPoint = "connect")]
static extern int Connect(IntPtr socket, IntPtr sockaddr, int namelen);
static int ConnectHook(IntPtr socket, IntPtr sockaddr, int namelen)
{
Console.WriteLine("SOCKET Connect");
int s = Connect(socket, sockaddr, namelen);
return s;
}
Код: Выделить всё
static void Main(string[] args)
{
string rn = "TCPIP::10.0.0.2::hislip0::INSTR";
//string rn = "TCPIP::10.0.0.2::inst0::INSTR"; // VXI-11
// Make sure ws2_32.dll is loaded
var vi = GlobalResourceManager.Open(rn) as IMessageBasedSession;
vi.Dispose();
LocalHook hook = LocalHook.Create(LocalHook.GetProcAddress("ws2_32.dll", "connect"),
new ConnectDelegate(ConnectHook),
null);
hook.ThreadACL.SetInclusiveACL(new int[] { 0 });
// Connect
vi = GlobalResourceManager.Open(rn) as IMessageBasedSession;
// IDN query
vi.RawIO.Write("*IDN?");
Console.WriteLine(vi.RawIO.ReadString());
// Sleep to monitor keep alive traffic using Wireshark
Thread.Sleep(10 * 1000);
// IDN query
vi.RawIO.Write("*IDN?");
Console.WriteLine(vi.RawIO.ReadString());
// Disconnect
vi.Dispose();
hook.Dispose();
}
Я могу запустить и подключить пример MessageBeep из https://easyhook.github.io/tutorials/cr ... lhook.html.
Подробнее здесь: https://stackoverflow.com/questions/798 ... et-connect
Мобильная версия