C# 中如何获取桌面上的键盘动作

C# 中如何获取桌面上的键盘动作,第1张

楼上这些说的都是当前程序获取到焦点的时候取的方法。。。LZ的意思是要程序只要运行起然后就算没有获取焦点没被激活也能获取系统中的所有键盘和鼠标按键值,,,,这个可以用WINDOWS的API来实现用钩子就可以取到当前计算机的键盘和鼠标的信息。如果你想弄可以加我QQ 我给你代码

尊敬的用户,您好!很高兴为您答疑。\x0d\在火狐下要想使这段代码生效,您需要添加如下代码:\x0d\原因如下:\x0d\onkeydown的处理方式,ie和火狐 (firefox)就不同,不得不做些小的处理。\x0d\documentonkeydown=function(e){var keyCode;if(windowevent){\x0d\keyCode=eventkeyCode;}else{\x0d\keyCode=ewhich;}if(keyCode==13){\x0d\alert("回车");}else{\x0d\alert(keyCode);}}\x0d\注意代码中的处理分支,ie是支持eventkeyCode,而firefox不支持event和keycode而转而支持事件处理程序的传入参数和which。\x0d\因此如果你单纯的使用ekeyCode在firefox中是无法执行的。\x0d\PS:在IE中event作为window对象的一个属性已经呗定义因此可以直接使用,不过在Firefox中是通过传参的方法来传播的,比如上面示例中的传入参数e\x0d\希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

我知道你出现什么问题了,你是不是写了一个类继承了Dialog,然后再实例化,这个dialog,但是button按钮美发添加监听器是不?如果你要是自己继承了DIalog的话,那么我们看看源码把!Dialog implements DialogInterface也就是说Dialog继承了 DialogInterface这个接口 好的 我们再看看DialogInterface这个接口把我们会发现DialogInterface 有一个方法:public static interface OnClickListener { public abstract void onClick(DialogInterface dialoginterface, int i); }好的 那么也就是如果我们继承了Dialog的话,我们同样也继承了DialogInterface这个接口的ONclickListner方法所以我们再给button设置onclicklistner的时候就会出错,因为本身就是不同包的东西,现在放到一个类里面肯定就会出错!解决方法:在给button 设置点击事件的时候,加上完整的包名就行了!专门给你敲了个例子你看看:Activity里面:public class QuestionActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { superonCreate(savedInstanceState); setContentView(Rlayoutmain); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Dialog ad = new MyDialog(this); adshow(); return superonKeyDown(keyCode, event); }}自定义Dialog里面:public class MyDialog extends Dialog { Context context; public MyDialog(Context context) { super(context); thiscontext = context; init(); } public void init() { LinearLayout ll = new LinearLayout(context); llsetLayoutParams(new LayoutParams(LayoutParamsFILL_PARENT, LayoutParamsWRAP_CONTENT)); Button btn = new Button(context); btnsetText("hello"); // btnsetOnClickListener(new androidviewViewOnClickListener() { @Override public void onClick(View view) { ToastmakeText(context, "hello", 0)show(); MyDialogthisdismiss(); } }); // lladdView(btn); thissetContentView(ll); }}注意行里面

LZ你好

之所以不能返回是因为返回键的时候系统当做整个activity,而不是webview的历史页面

也就是说你必须消费掉back事件。

你可以覆盖activity中的方法

public

boolean

onKeyDown(int

keyCode,

KeyEvent

event)

{

if

((keyCode

==

KeyEventKEYCODE_BACK)

&&

mWebViewcanGoBack())

{

mWebViewgoBack();

return

true;

}

return

superonKeyDown(keyCode,

event);

}

这样就行,另外再提醒一点,如果在webview中点连接,默认的是会调用系统的浏览器

所以还需

mWebViewsetWebViewClient(new

WebViewClient(){

public

boolean

shouldOverrideUrlLoading(WebView

view,

String

url)

{

viewloadUrl(url);

return

true;

}

});

这样就能保证在webview中跳转

html语言

<div style="width: 500px;height: 200px;background-color: cyan;" id="showZone"></div>

javascript方法:

documentonkeydown=function(event){

        var event=event||windowevent;

        documentgetElementById("showZone")innerHTML=eventkeyCode;

};

这样就能获得点击某个按键之后指令了,比如按下了“1”,显示了“49”,这就对了。

在大多数情况下,在Activity中实现WebView点击返回键返回上一页是经常遇到的事情,并且很容易解决,如下:

android:id="@+id/webView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scrollbars="none">//无滚动条

@Override

protected voidonCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_webview);

WebView webView = (WebView)findViewById(RidwebView);

}

@Override

booleanonKeyDown(intkeyCode,KeyEvent event) {

if(keyCode == KeyEventKEYCODE_BACK&&webViewcanGoBack()) {

webViewgoBack();

return true;

}else{

//结束当前页

return superonKeyDown(keyCode,event);

}

}

那么在Fragment中,我们是如何进行webview点击返回键时返回上一级呢?

如下:

android:id="@+id/webView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scrollbars="none">

@Override

publicViewonCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

View view = inflaterinflate(Rlayoutfragment_webview,container, false);

WebView webView = (WebView)viewfindViewById(RidwebView);

webViewsetOnKeyListener(newViewOnKeyListener() {

@Override

public booleanonKey(View view, intkeyCode,KeyEvent keyEvent) {

if((keyCode == KeyEventKEYCODE_BACK) &&webViewcanGoBack()) {

getActivity()runOnUiThread(newRunnable() {

@Override

public voidrun() {

webViewgoBack();

}

});

return true;

}

return false;

}

});

returnview;

}

以上就是关于C# 中如何获取桌面上的键盘动作全部的内容,包括:C# 中如何获取桌面上的键盘动作、js中键盘事件e.which,火狐浏览器不支持!在线等!、android studio中onkeydown怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9565192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存