在Node-FFI中使用SendInput

我想使用FFI包从nodejs中的Windows Api使用SendInput函数。 我对C的了解是有限的,所以我无法弄清楚我有什么问题,我基本上是试图按键盘上的键。 那是我的代码: var ffi = require(‘ffi’); var ref = require (‘ref’); var struct = require (‘ref-struct’); var keyboardInput = struct({ ‘type’: ‘int’, ‘wVK’: ‘int’, ‘wScan’: ‘int’, ‘dwFlags’: ‘int’, ‘time’: ‘int’, ‘dwExtraInfo’: ‘int64’ }); var keyboardInputPtr = ref.refType(keyboardInput); var keyboard = new keyboardInput(); keyboard.type = 1; keyboard.wVK = 0x41; keyboard.wScan = 0; keyboard.dwFlags = […]

C.循环压缩+发送(gzip)ZLIB

我目前正在用C构建一个HTTP服务器。 请注意这段代码: #define CHUNK 0x4000 z_stream strm; unsigned char out[CHUNK]; int ret; char buff[200]; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; int windowsBits = 15; int GZIP_ENCODING = 16; ret = deflateInit2(&strm, Z_BEST_SPEED, Z_DEFLATED, windowsBits | GZIP_ENCODING, 1, Z_DEFAULT_STRATEGY); fill(buff); //fill buff with infos do { strm.next_in = (z_const unsigned char *)buff; strm.avail_in […]

_wfreopen适用于c:/path/file.txt但不适用于c:\ path \ file.txt?

TCHAR finalpath[MAX_PATH]; GetCurrentDirectory(MAX_PATH,finalpath); TCHAR filename[] = TEXT(“\\lista.txt”); wcscat(finalpath,filename); wprintf(L”List will be saved to %s”, finalpath); 所以这基本上证实了我的最终路径确实是c:\ somepath \ lista.txt 但_wfreopen(TEXT(finalpath),TEXT(“w”),stdout); 如果我只是改变它 _wfreopen(TEXT(“c:/somepath/lista.txt”),TEXT(“w”),stdout); 一切都工作正常,为什么以及如何让它接受我的最终路径arg? 谢谢

在MinGW g ++编译器中获取“tlhelp32.h”的编译错误

我正在编写一个简单的C ++应用程序来检查给定的exe文件示例:’a.exe’是否正在运行(Windows OS),我已经用Google搜索并在下面的链接中找到了一些代码。 http://stackoverflow.com/questions/3355379/how-do-i-find-out-if-a-exe-is-running-in-c 上面提到的代码使用头文件“tlhelp32.h”。 我只是复制了代码并进行了一些必要的更改,然后在MinGW中编译,出现了下一个问题,该头文件中提到的所有数据类型都出错了ex: ‘DWORD’ does not name a type, ‘LONG’ does not name a type, ‘WCHAR’ does not name a type,’CHAR’ does not name a type 在现有的头文件无法编译之前,我从未遇到过这种问题(是的,我已经检查了它)。 非常感谢任何帮助。 代码如下: #include int main() { PROCESSENTRY32 pe32 = {0}; HANDLE hSnap; int iDone; int iTime = 60; bool bProcessFound; while(true) // go forever { […]

如何将R的情节运行到C / C ++中?

如何在不使用R扩展的情况下在C中执行R命令,例如: int main() { system(“R g<- graph(c(0,1,0,4,0,9,1,7,1,9,2,9,2,3,2,5,3,6,3,9,4,5,4,8,5,8,6,7,6,8,7,8),n=10,dir=FALSE) plot(g)") return(0) }

带联合的二进制表示

在以下程序中: union { int i; float f; } u; 假设32位编译器, u在内存中分配4个字节。 uf = 3.14159f; 3.14159f使用IEEE 754表示,在这4个字节中。 printf(“As integer: %08x\n”, ui); 你在这里代表什么? IEEE 754二进制表示是否被解释为4字节signed int ?

为什么ucontext有这么高的开销?

Boost v1.59中Boost.Context的文档报告了以下性能比较结果: +———-+———————-+——————-+——————-+—————-+ | Platform | ucontext_t | fcontext_t | execution_context | windows fibers | +———-+———————-+——————-+——————-+—————-+ | i386 | 708 ns / 754 cycles | 37 ns / 37 cycles | ns / cycles | ns / cycles | | x86_64 | 547 ns / 1433 cycles | 8 ns / 23 cycles | 16 […]

设置一个新的自变量会改变c中的所有其他变量

我真的不知道哪个标题更适合描述我的问题。 我通过VirtualBox使用Linux。 我正在使用gcc编译器。 到目前为止,我一直在编写代码(300行),没有类似的问题。 突然间,如果我输入一个新变量并设置一个值,我代码中的其他变量就会改变它们的值。 我想知道我是否需要清理记忆或其他东西。 do { rand_arr = rpermute(dim_x * dim_y); flag = 0; for (t = 0; t < (dim_x * dim_y); t++) { x = rand_arr[t] / dim_x; y = rand_arr[t] % dim_x; if (arr[x][y] == 255) { current_distance = sqrt(pow(exit[0][0] – x, 2) + pow(exit[0][1] – y, 2)); if (x […]

在C中动态增加数组大小

我需要根据用户输入增加2个数组的长度。 我正在使用下面的代码。 但输出与用户输入不匹配。 #include int main() { int i=0, key=0, size[key], time[key]; while (key!=-1) { printf(“Insert value for size : “); scanf(“%d”,&size[i]); printf(“Insert value for time : “); scanf(“%d”,&time[i]); i++; printf(“Run again Press-1 or Exit : “); scanf(“%d”,&key); } int x=0; for (x ; x<i ; x++) { printf("%d %d\n",size[x],time[x]); } return 0; } 当用户输入值时: […]

对makefile的递归调用不会更新目标文件

我有一个带有递归调用的makefile。 当我第一次运行make时,会创建目标文件并将其链接得很好。 但是当我修改源文件并再次运行make时,不会重新创建对象(make表示目标是最新的)。 我需要运行make clean然后运行make。 这是我的makefile的简化版本,我认为包括所有相关信息: PCC = mpicc #Locations OBJDIR = ./objects #Compiler and linker flags FLAGS = -g -lm #Object files SHAREDOBJS = $(addprefix $(OBJDIR)/,shared1.o shared2.o) SPECIFICOBJS = $(addprefix $(OBJDIR)/,specific1.o specific2.o) #How to compile and link $(OBJDIR)/%.o: %.c $(PCC) -c $*.c $(EXTRA_FLAGS) -o $(OBJDIR)/$*.o PROGNAME: $(MAKE) $(MAKEFLAGS) EXTRA_FLAGS=”$(FLAGS)” PROGNAME_TARGET PROGNAME_TARGET: $(SHAREDOBJS) $(SPECIFICOBJS) $(PCC) […]