在UNIX shell脚本中,我可以使用什么来将十进制数转换为十六进制数?我认为od可以解决这个问题,但它没有意识到我正在为它提供数字的ASCII表示.
printf的?毛!现在使用它,但还有什么可用吗?
有谁知道如何获得顶部活动窗口的PID,然后如何使用PID获取窗口的属性?我指的是流程名称,程序名称等属性.
我在Linux下使用Qt(Ubuntu 9.10).
我有进程的PID(和名称),我想把它带到linux(ubuntu)的前面.在Mac上,我只是这样做SetFrontProcess(pid),在Windows上我会枚举窗口,选择我想要的那个,然后打电话,SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);但我不知道在linux上做什么.我已经看了一下X Lib,但是大多数/所有这些函数似乎都在你进程中的窗口上运行.
编辑:使用bdk的答案我将这些助手添加到我的代码中以获取Window
bool searchHelper(Display* display, Window w, Atom& atomPID, unsigned long pid, Window& result)
{
bool ret = false;
Atom atomType;
int format;
unsigned long nItems;
unsigned long bytesAfter;
unsigned char* propPID = 0;
if (Success == XGetWindowProperty(display,w,atomPID,0,1,False,XA_CARDINAL,&atomType,&format,&nItems,&bytesAfter,&propPID))
{
if (propPID != 0)
{
if (pid == *((unsigned long *)propPID))
{
result = w;
ret = true;
}
XFree(propPID);
}
}
if (ret)
return ret; //we found …Run Code Online (Sandbox Code Playgroud) 我有一个基本的密钥记录器内核模块,它将所有按键记录到syslog上.我只需要记录浏览器中的那些按键.有没有办法找到导致中断的应用程序的进程ID?另外,有没有办法将按键保存到文件?任何人都可以帮助.. :)
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/keyboard.h>
#include <linux/notifier.h>
MODULE_LICENSE("GPL");
#ifdef notifier_block
struct notifier_block {
int (*notifier_call)(struct notifier_block *, unsigned long, void *);
struct notifier_block *next;
int priority;
};
#endif
char call(int v)
{
char val=NULL;
if (v == 16) {val='q';}
else if (v == 17) {val='w';}
else if (v == 18) {val='e';}
else if (v == 19) {val='r';}
else if (v == 20) {val='t';}
else if (v == 21) {val='y';}
else if (v == 22) {val='u';}
else if …Run Code Online (Sandbox Code Playgroud) 在查看RescueTime for windows/mac之后,似乎有一个适用于Linux的版本,但似乎不是最新版本.此外,这是周末,我想花时间玩X11 ..
我正在考虑制作一个简单的生产力轮询应用程序,每个短间隔轮询活动窗口,并截取(并传递)鼠标和键盘按下以测量生产力.
这有可能吗?在检查Xlib后,我在哪里找不到可执行文件的二进制名称.等等
是否有捷径可寻?我从来没有在任何地方见过这个(除了 Adobe/... Firefox 插件),所以我对此表示怀疑......
如果没有,是否有一种可靠的、hacky 的方法(例如Xlib通过 挂钩到该进程的调用LD_PRELOAD)?
如果重要的话,假设外部进程是mplayer,我的编程语言是C。我有一种预感,Xlib直接使用是我最好的选择,但请随意建议其他选择。仅有mplayer- 的解决方案是不够的。