我想制作一个WPF程序来转换单位(其他应用程序中的数字)。 我使程序可以在系统托盘上运行,也可以设置全局热键。 但这是我第一次制作WPF程序,所以遇到了一些问题。
当用户按下全局热键时调用此功能。 为了进行计算,我需要从其他应用程序中复制/粘贴选定的文本。 如果您能帮助我,我将不胜感激。 (代码可能有点混乱)
他想要的是:1.选择文本2.按Ctrl + D(全局热键),然后完成。
void ClipboardCalc()
{
string resultStr = string.Empty;
string temp = string.Empty;
string digit = string.Empty;
double result = 0;
temp = Clipboard.GetText();
// Need to copy "selected text from other application" to clipboard here.
resultStr = Clipboard.GetText();
resultStr = string.Join(string.Empty, Regex.Match(resultStr, @"\d+(\.\d+)?"));
try
{
result = Convert.ToDouble(resultStr);
}
catch (Exception ee)
{
}
if (reverse_mode == false)
result *= 3.30579;
else
result /= 3.30579;
digit = "F" + textBox2.Text;
if (result == (int)result)
resultStr = result.ToString();
else
resultStr = result.ToString(digit);
resultStr = string.Format("{0:0.##########}", Convert.ToDouble(resultStr));
if (print_measure != false)
{
if (reverse_mode != false)
resultStr += "평";
else
resultStr += "m²";
}
Clipboard.SetText(resultStr);
// Then paste clipboard text here.
//Clipboard.SetText(temp);
}
答案 0 :(得分:0)
这是一个庞然大物,但似乎是一个庞然大物的程序,所以我还是把它放在那里。
如果您成功设置了“全局热键”,那么我假设您已经进入p /调用领域。因此,我不妨向您介绍SendInput。这种本机方法允许应用程序“将击键,鼠标动作和按钮单击合成到当前活动的窗口”。您可以使用它将Ctrl + C发送到活动窗口。
同样,这是一个有很多假设的综合解决方案,但在大多数情况下都可能有效。
请注意,您必须分别发送按键按下和按键输入(即依次按“ Ctrl向下”,“ C向下”,“ C向上”,“ Ctrl向上”)。