我的朋友要我创建一个程序,该程序将在一天的特定时间为他按F12键。
这是一个不寻常的请求,我想知道如何在特定时间获取Visual C#来发送F12请求。也许最好实现自动按F12并将其设置在任务计划程序中的程序?我不知道。
我认为理想的选择是使程序在后台运行并在特定时间按下键。我不知道如何指示Visual C#发送F12键。另外,我不知道该如何设置某些时间才能执行。
有人可以帮我或指出我的资源吗?
答案 0 :(得分:0)
您可能想使用keybd_event
。
这是一个示例代码,说明了如何使用它。
using System;
using System.Threading;
using System.Runtime.InteropServices;
public class Program
{
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; // key down flag
public const int KEYEVENTF_KEYUP = 0x0002; // key up flag
public const int F12 = 123; // F12 key code
public static void Main()
{
const int hour = 4;
const int min = 15;
// Get DateTime at which the key is supposed to be pressed
DateTime nextCertainTime = DateTime.Now.Date.AddHours(hour).AddMinutes(min);
// If it is already too late for today, add 1 day (set to tomorrow)
if (nextCertainTime < DateTime.Now)
{
nextCertainTime = nextCertainTime.AddDays(1);
}
// Calculate the remaining time
TimeSpan remainingTime = nextCertainTime - DateTime.Now;
// Wait until "certain time"
Thread.Sleep((int)remainingTime.TotalMilliseconds);
keybd_event(F12, 0, KEYEVENTF_EXTENDEDKEY, 0); // press F12 down
keybd_event(F12, 0, KEYEVENTF_KEYUP, 0); // release F12
}
}
如果要重复执行此操作,只需将其放入while (true)
循环,并在每次迭代中向nextCertainTime
添加1天。
最好改用Timer,但设置起来并不容易。
或者,也可以使用SendKeys.Send()
代替keybd_event
,但是按一个键有点过分。
System.Windows.Forms.SendKeys.Send("{F12}");
如果您决定使用Task Scheduler(如另一个答案所建议),则不妨考虑使用比C#更合适的方法。
也许是AHK脚本,可能像这样简单:
Send {F12}
答案 1 :(得分:0)
您可以检查Windows Input Simulator Library
public static void Main()
{
InputSimulator.SimulateKeyPress(VirtualKeyCode.SPACE);
}
您只需要做的就是将代码编译成可执行文件,然后将其作为Task添加到 Windows Task Scheduler 中。
或者,您也可以在User32.dll
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; // key down flag
public const int KEYEVENTF_KEYUP = 0x0002; // key up flag
public const int F12 = 123; // F12 key code
public static void Main()
{
keybd_event(F12, 0, KEYEVENTF_EXTENDEDKEY, 0); // press F12 down
keybd_event(F12, 0, KEYEVENTF_KEYUP, 0); // release F12
}
再次使用Windows任务计划程序