小编Mat*_*lia的帖子

没有调用WH_KEYBOARD_LL挂钩

我遇到WH_KEYBOARD_LL钩子有些问题:

我使用全局LL钩子的原因并不重要我只是需要它为我的应用程序(我尝试了其他类型的钩子,但他们不适合我).

钩子函数在一个dll中,dll在应用程序启动时加载,钩子也在主线程启动时设置.这非常有效.当我需要取消激活挂钩并重新激活它时,会出现问题.如果我从应用程序的主线程执行此操作它可以正常工作,但我需要的是从计时器执行此操作,这里出了问题.我使用计时器检查我的应用程序的窗口是否是前台窗口(活动窗口),如果是,则挂钩被激活,如果不是,则挂钩被停用.SetWindowsHookEx从计时器调用时的返回值总是正常(非空),根据MSDN意味着钩子已成功设置,但我的钩子函数永远不会被调用.

以下是我设置钩子的方法:

SetWindowsHookEx(WH_KEYBOARD_LL, keyboardHookProcedure,
                 GetModuleHandle(curModule.ModuleName), 0);
Run Code Online (Sandbox Code Playgroud)

有没有人经历过这个?

我唯一的猜测是我的钩子函数在一个DLL中,而计时器回调来自另一个dll,这与我的问题有什么关系吗?

c# c++ hook winapi visual-c++

1
推荐指数
1
解决办法
1794
查看次数

内存分配(C++)编译时/运行时?

我不确定这个问题有多合适,但是 -

我很好奇编译器如何在构造对象(内存分配)之前为内存设置内存(甚至在构造函数被调用之前!).

原始数据类型如何发生?

这听起来有点天真,但具体到底是什么?

它是完全运行时间过程,或者它(编译)有任何计划想要做到这一点,要做到这一点,在运行时,它在手之前决定编译时.我根本不知道!

对象,无论是原始类型,指针还是大类的实例,都占用一定的已知内存量.那个记忆必须以某种方式留给对象.在某些情况下,初始化该预留内存.初始化是构造函数的作用.它们不会留出(或分配)存储对象所需的内存.该步骤在调用构造函数之前执行.

换句话说,就时间而言,什么样的变量的内存分配何时发生呢?在编译(或运行时)的哪一步?

c++ memory compiler-construction constructor compilation

1
推荐指数
1
解决办法
8826
查看次数

C/C++中大文件二进制数据的逻辑运算

我有两个二进制文件(数十MB的顺序),我想要或这些文件的每一点.当然,我希望它尽可能高效.

所以我有两种方法可以做到这一点,但我仍然认为(我有点觉得)这应该是一种我不知道的更有效的方式.

给定文件a和b ..我想要做的是a = a | b

  1. 加载两个文件,将它们解析为两个巨大的std :: bitsets和/或它们
  2. 逐个加载两个文件和/或如果一个巨大的for循环它们...

还有其他办法吗?

c c++

1
推荐指数
1
解决办法
234
查看次数

指着阵列

有这样的代码:

int tab[14][2];
int (*wskk)[2] = tab; // &tab makes error

int tab2[2];
wskk = &tab2; // tab2 makes error
Run Code Online (Sandbox Code Playgroud)

为什么可以使用一个指针指向两个不同维度的数组?

c++

1
推荐指数
1
解决办法
117
查看次数

什么是隐式数据结构?堆是实现优先级队列的隐式数据结构吗?

我的问题可能看起来很幼稚,但我真的不明白这个问题,因为我只是数据结构课程的新手。我知道最大和最小堆是如何工作的,但我不确定堆是否是实现优先级队列的隐式数据结构。

language-agnostic heap priority-queue data-structures

1
推荐指数
1
解决办法
1643
查看次数

C的C++等价物

用于在动态内存中使用数组的程序.需要等同于C.可以有人帮忙吗?

const int n = 6;
char **words = (char**) malloc(n *sizeof(char*));
for(int i = 0 ; i < n; i++)
    words[i] = (char*)malloc( 50 * sizeof(int));

for(int i = 0; i < n; i++) 
{
    cin>>words[i];
}

cout<<endl;
for(int i = 0; i < n; i++) 
{
    if(words[i][0] == 'q')
        cout<<words[i]<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c arrays

1
推荐指数
1
解决办法
130
查看次数

char数组的创建导致内存静态?

对于以下代码,我想知道是否只在堆栈中创建了一个数组,或者是否还有一个在静态中创建的数组.我只是对字符串中的数组创建感到困惑.

char str[] = "White";
Run Code Online (Sandbox Code Playgroud)

我假设这会在堆栈中创建一个名为str的指针,该指针指向具有以下内容的数组"White\0",在静态内存中.这是正确的假设吗?

c++ stack static memory-management

1
推荐指数
1
解决办法
217
查看次数

为什么同一声明区域内的同名声明被拒绝?

以下代码无法编译:

#include <iostream>
#include <stdio.h>

int a=5;
char a='a';

int main(){ std::cout << a;}
Run Code Online (Sandbox Code Playgroud)

这是因为:

test.cpp:5:6: error: conflicting declaration ‘char a’
test.cpp:4:5: error: ‘a’ has a previous declaration as ‘int a’
Run Code Online (Sandbox Code Playgroud)

但是标准中规定的限制在哪里?我找不到它.请给我一个参考.

c++ language-lawyer

1
推荐指数
1
解决办法
131
查看次数

在c ++中使用空引用检查

以下代码检查空引用,并使用newif检测创建对象.

代码编译并成功创建对象(如预期的那样),但程序意外终止ref.set_dat(55)于函数行main()(也显示在注释中),这是一种意外行为.

我似乎不明白为什么set_dat()在使用成功创建对象时方法调用方法失败new

class X {
        private:
            int *_dat,*__dat;
        public:
            X(); // constructor
            ~X(); // destructor
            int get_dat() const {
                return *(this->_dat);
            }
            int get__dat() const {
                return *(this->__dat);
            }
            void set_dat(int data) {
                *(this->_dat)=data;
            }
            void set__dat(int data) {
                *(this->__dat)=data;
            }
    };

    X::X() {
        this->_dat=new int(0); // assign default value of 0
        this->__dat=new int(0);
        cout << "Construction Successful\n";
    }

    X::~X() {
        delete this->_dat;
        delete this->__dat;
        _dat=NULL;
        __dat=NULL;
        cout << …
Run Code Online (Sandbox Code Playgroud)

c++ oop pointers reference

1
推荐指数
1
解决办法
153
查看次数

具有平方根的预期表达

#define PI = 3.141593
#define G = 6.67259E-11
#define g = 9.80665
#define M = 5.972E+24
#define r = 6378000
#define h = 220

#include <stdio.h>
#include <math.h>
int main(void)
{
    int value;
    value =sqrt((G/M)/(r+h))

    printf("This is the tangential speed:") value;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我对编码很新,我的程序在代码块中给了我几个错误,有人能给我一些指导吗?

c

1
推荐指数
1
解决办法
39
查看次数