C# C中的主句柄和数字错误#
我尝试将我的第一个自动发送密钥编码到一个已经运行的进程 我对进程列表有一个问题:如果两个目标同时打开,这意味着它们具有相同的MainWindowTitle,那么我的应用程序只发送到活动窗口 我有没有办法把钥匙送到2号目标?还有我在代码中使用的数字不起作用,只有F1到F12起作用 mega.co.nz/#!O1Yx1YyR!XtDHsEHbqrj3_EzdIpC8xD0jeo_vkbmIoCnkVQbQiO0C# C中的主句柄和数字错误#,c#,C#,我尝试将我的第一个自动发送密钥编码到一个已经运行的进程 我对进程列表有一个问题:如果两个目标同时打开,这意味着它们具有相同的MainWindowTitle,那么我的应用程序只发送到活动窗口 我有没有办法把钥匙送到2号目标?还有我在代码中使用的数字不起作用,只有F1到F12起作用 mega.co.nz/#!O1Yx1YyR!XtDHsEHbqrj3_EzdIpC8xD0jeo_vkbmIoCnkVQbQiO0 这是我的项目您应该将相关代码粘贴到stackoverflow本身,而不是引用外部站点
这是我的项目您应该将相关代码粘贴到stackoverflow本身,而不是引用外部站点 话虽如此,您的代码结构如下:
cb_procecss.Items.Clear();
foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
if (p.MainWindowTitle!= "")
cb_procecss.Items.Add(p.MainWindowTitle);
}
Send(key, cb_procecss.Text.ToString().Trim());
public void Send(int Key, string _FindWindow)
{
IntPtr Handle = FindWindow(null, _FindWindow);
PostMessage(Handle, WM_KEYDOWN, Key, 0);
}
public class ProcessWindowWrapper : IDisposable
{
Process process;
public ProcessWindowWrapper(Process process)
{
this.process = process;
}
public Process Process { get { return process; } }
public IntPtr MainWindowHandle
{
get
{
try
{
return (process == null ? IntPtr.Zero : process.MainWindowHandle);
}
catch (InvalidOperationException)
{
// Process exited
return IntPtr.Zero;
}
}
}
public override string ToString()
{
return (process == null ? string.Empty : process.MainWindowTitle);
}
#region IDisposable Members
public void Dispose()
{
// Dispose of unmanaged resources.
Dispose(true);
// Suppress finalization. Since this class actually has no finalizer, this does nothing.
GC.SuppressFinalize(this);
}
void Dispose(bool disposing)
{
if (disposing)
{
var process = Interlocked.Exchange(ref this.process, null);
if (process != null)
process.Dispose();
}
}
#endregion
}
把它放在列表中而不是主窗口标题字符串中,您的簿记问题就会得到解决。通过重写ToString()
可以确保列表中显示正确的标题
请注意,您最终应该这样做,因此这个类应该实现我已经完成的
IDisposable
。您需要在问题中包含相关代码,而不是指向外部资源的链接。