我需要在第三方应用程序中模拟按键.假设我有一个需要向Calculator应用程序发送"8"的C#应用程序.我不能使用.Net的SendKeys或win32 api的keybd_event,因为它们都要求窗口是最活跃的窗口,这在我的情况下不是这种情况.
这样我就可以调用sendMessage和postMessage.我在过去的三个小时里一直试图获得一些结果,但现在我完全没有希望了.
我有以下内容:
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName,string lpWindowName);
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
public static extern bool PostMessage(int hWnd, uint Msg, int wParam, int lParam);
private void button1_Click(object sender, EventArgs e)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSCOMMAND = 0x018;
const int SC_CLOSE = 0x053;
int WindowToFind = FindWindow(null,"Calculator");
int result = SendMessage(WindowToFind, WM_SYSCOMMAND, SC_CLOSE, 0);
Boolean result2 = PostMessage(WindowToFind, …Run Code Online (Sandbox Code Playgroud) 我正在使用服务器 - 客户端模型在C#中开发应用程序,其中服务器将带有位图的字节数组发送到客户端,客户端将其加载到屏幕中,向服务器发送"OK",然后服务器发送另一个图像,等等.
图像缓冲区的长度变化,通常在60kb到90kb之间,但我看到它并不重要.如果我将客户端和服务器放在同一台计算机上,使用localhost,一切正常.服务器执行beginSend,客户端执行endReceive并传输整个缓冲区.
但是,我现在正在无线网络中对此进行测试,结果如下:
总是这样,收到第一个包含1460字节的数据包,然后第二个数据包包含其余数据包.
我可以通过加入收到的两个字节数组来解决这个问题,但这似乎不对.我甚至不确定为什么会这样.这是对网络的一些限制吗?为什么C#不等待传输整个数据?我的意思是,它是TCP,我不应该担心它,对吧?
无论如何,任何帮助都会很棒!
干杯