C# - Windows锁定时拒绝SendKeys访问

时间:2017-12-23 06:46:40

标签: c# sendkeys

我正在测试一个通过SendKeys移动另一个应用程序的应用程序,当Windows登录时,每个工作正常。这是记事本的测试代码(记事本已打开):

Process p = System.Diagnostics.Process.GetProcessesByName("notepad").Last();
if (p != null)
{
  IntPtr h = p.MainWindowHandle;
  SetForegroundWindow(h);
  SendKeys.SendWait("Hellow world");
}

我希望在Windows被锁定时它可以正常工作,但错误是“访问被拒绝”#39;记事本是测试应用程序,锁定系统是断开远程桌面的模拟,所以我必须在锁定模式下访问。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我想这是因为当Windows被锁定时,桌面的可访问性被锁定,现在桌面无法接收输入。桌面的焦点丢失了。 GET / SETForegroundWindow,将无法正常工作。

我没试过,但是

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.male);
    list = (ListView) findViewById(R.id.lv_stars_male);
    Resources res = getResources();
    star_names = res.getStringArray(R.array.starnames);
    star_dates = res.getStringArray(R.array.stardates);
    MaleLikeDislikeAdapter adapter = new MaleLikeDislikeAdapter(this,star_names,star_images, star_dates );
    list.setAdapter(adapter);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (position==0) {
                Intent intent = new Intent("com.example.shahid.myapp.List_Activity");
                startActivity(intent);
                la.setContentView(R.layout.listviewlayout);
               // la is an object of List_Activity to which i want to set different layouts on item click
            }
            else {
                Intent intent = new Intent("com.example.shahid.myapp.List_Activity");
                startActivity(intent);
                la.setContentView(R.layout.list_layout);
            }

        }
    });

此功能可能有助于https://msdn.microsoft.com/en-us/library/windows/desktop/ms684303(v=vs.85).aspx