有谁知道如何在控制台应用程序中使用RegisterHotKey/UnregisterHotKey API调用?我假设设置/删除热键是相同的,但是如何在按下键时收到回叫?
我看到的每个例子都是针对Winforms和使用的protected override void WndProc(ref Message m){...},我无法使用.
SetupHotkey一个不同的线程也没有任何反应.有什么想法吗?
class Program
{
static void Main(string[] args)
{
new Hud().Init(args);
}
}
class Hud
{
int keyHookId;
public void Init(string[] args)
{
SetupHotkey();
InitPowershell(args);
Cleanup();
}
private void Cleanup()
{
HotKeyManager.UnregisterHotKey(keyHookId);
}
private void SetupHotkey()
{
keyHookId = HotKeyManager.RegisterHotKey(Keys.Oemtilde, KeyModifiers.Control);
HotKeyManager.HotKeyPressed += new EventHandler<HotKeyEventArgs>(HotKeyManager_HotKeyPressed);
}
void HotKeyManager_HotKeyPressed(object sender, HotKeyEventArgs e)
{
//never executed
System.IO.File.WriteAllText("c:\\keyPressed.txt", "Hotkey pressed");
}
private static void InitPowershell(string[] args)
{
var config = …Run Code Online (Sandbox Code Playgroud) 我需要从python中操作一个subversion客户端.我需要:
一个快速搜索不转了一下我在寻找,我宁愿没有写周围的svn的命令行工具,我自己的包装.(BTW:在Linux和python 2.6下运行)
这是我的代码http://jsfiddle.net/AB6J3/7/你可以看,编辑等.
当我翻到红色边框时,橙色框应该向上滑动,当鼠标移出时它应该向下滑动.它适用于其他方式,但当我将slideDown更改为slideUp时,它不起作用:/我错过了什么?
欣赏有帮助.
<!DOCTYPE html>
<html>
<head>
<style>
div#monster { background:#de9a44; margin:3px; width:80px; height:40px; display:none; float:left; position:absolute; right:10px; top:0; }
#clickk {width:40px; height:40px; background:#ccc; position:absolute; top:0; right:10px;}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div style="width:550px; padding:40px 0 0;margin:0 auto; border:1px solid #111; position:relative;">
<div id="monster"></div>
<div id="clickk"></div><br />
<div style="width:500px; height:300px; background-color:#ccc; margin:0 auto;"></div>
</div>
<script>
$("#clickk").hover(function () {
if ($("#monster").is(":hidden")) {
$("#monster").slideDown("fast");
} else {
$("#monster").slideUp("fast");
}
});
</script>
</body>
</html>?
Run Code Online (Sandbox Code Playgroud) 我正在使用str_replace,但它无法正常工作.我有一个文本区域,输入与表单一起发送.当服务器收到数据时,我想将新行更改为",".
$teams = $_GET["teams"];
$teams = str_replace("\n",",",$teams);
echo $teams;
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我收到了以下结果
切尔西
,真实
,巴塞罗那
而不是Chealsea,真实,巴塞罗那.
怎么了?
我创建了一个监视请求长度的过滤器.
long start = System.nanoTime();
...
long end = System.nanoTime();
Run Code Online (Sandbox Code Playgroud)
我怎么能从这里得到毫秒数?
我试图通过使用gdb的反汇编程序检查它来了解简单C程序的汇编级代码.
以下是C代码:
#include <stdio.h>
void function(int a, int b, int c) {
char buffer1[5];
char buffer2[10];
}
void main() {
function(1,2,3);
}
Run Code Online (Sandbox Code Playgroud)
以下是两个反汇编代码main和function
gdb) disass main
Dump of assembler code for function main:
0x08048428 <main+0>: push %ebp
0x08048429 <main+1>: mov %esp,%ebp
0x0804842b <main+3>: and $0xfffffff0,%esp
0x0804842e <main+6>: sub $0x10,%esp
0x08048431 <main+9>: movl $0x3,0x8(%esp)
0x08048439 <main+17>: movl $0x2,0x4(%esp)
0x08048441 <main+25>: movl $0x1,(%esp)
0x08048448 <main+32>: call 0x8048404 <function>
0x0804844d <main+37>: leave
0x0804844e <main+38>: ret
End of assembler dump.
(gdb) …Run Code Online (Sandbox Code Playgroud) 我知道这memset(ptr, 0, nbytes)很快,但有更快的方法(至少在x86上)?
我假设memset使用mov,但是当大多数编译器将内存归零时,xor因为它更快,更正确吗?edit1:错了,因为GregS指出只适用于寄存器.我在想什么?
另外我问一个比我更熟悉汇编程序的人看看stdlib,他告诉我x86 memset没有充分利用32位宽的寄存器.然而当时我很累,所以我不太确定我是否理解正确.
edit2:我重新审视了这个问题并进行了一些测试.这是我测试的:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <sys/time.h>
#define TIME(body) do { \
struct timeval t1, t2; double elapsed; \
gettimeofday(&t1, NULL); \
body \
gettimeofday(&t2, NULL); \
elapsed = (t2.tv_sec - t1.tv_sec) * 1000.0 + (t2.tv_usec - t1.tv_usec) / 1000.0; \
printf("%s\n --- %f ---\n", #body, elapsed); } while(0) \
#define SIZE 0x1000000
void zero_1(void* buff, size_t size)
{
size_t i;
char* foo …Run Code Online (Sandbox Code Playgroud) 我上高中并上课,基本上我们设计自己的课程并选择我们学到的东西.我选择了解C++和游戏编程.
我想尽可能多地学习使用C++与OpenGL或DirectX或其他API.
在我完成学习C++之后,我应该去哪里?你能推荐一本关于游戏编程的书吗?