如何开启或关闭Caps Lock?我试图搜索它,但我发现的是如何切换或打开/关闭它与我正在寻找的完全相反.
我试图在C++和Delphi中都这样做.
请帮忙
让我们说这是C++代码:
void change(int& x){
x++;
}
Run Code Online (Sandbox Code Playgroud)
要么
void change2(int* a){
*a++;
}
Run Code Online (Sandbox Code Playgroud)
两者都会改变全局x,对吧?
那我怎么能在java中做那样的事情呢?
具体来说,我想指向一个Vector对象
但是由于Java没有指针,我不知道该怎么做.
从搜索互联网上我看到人们说Java以其他方式做到了这一点,但我没有找到任何真实的例子.
感谢帮助!
当我使用普通的for循环时,
数组中的所有元素都会正常初始化:
Object[] objs = new Object[10];
for (int i=0;i<objs.length;i++)
objs[i] = new Object();
Run Code Online (Sandbox Code Playgroud)
但是当我使用for-each循环时.
在null循环之后,数组元素仍然是:
Object[] objs = new Object[10];
for (Object obj : objs)
obj = new Object();
Run Code Online (Sandbox Code Playgroud)
我认为obj是指数组中的特定元素,
所以如果我初始化它,数组元素也会被初始化.
为什么不发生这种情况?
我有一个带有PID的记事本:2860
#include <iostream>
#include <windows.h>
#include <psapi.h>
using namespace std;
HWND SendIt (DWORD dwProcessID){
HWND hwnd = NULL;
do {
hwnd = FindWindowEx(NULL, hwnd, NULL, NULL);
DWORD dwPID = 0;
GetWindowThreadProcessId(hwnd, &dwPID);
if (dwPID == dwProcessID) {
cout<<"yay:"<<hwnd<<":pid:"<<dwPID<<endl;//debug
PostMessage(hwnd,WM_KEYDOWN,'A',1); //send
}
} while (hwnd != 0);
return hwnd; //Ignore that
}
int main()
{
SendIt(2680); //notepad ID
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和记事本应该写信A但没有任何反应.
我尝试WM_DESTROY了它的消息,它正在工作,但WM_KEYDOWN没有工作.
我也做了GetLastError(),它打印错误2 ERROR_FILE_NOT_FOUND.
为什么这不起作用,是否可以修复它?
这是我的全部代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Images: array[0..29,0..39] of TImage; //array
implementation
{$R *.dfm}
//form create
procedure TForm1.FormCreate(Sender: TObject);
var xx,yy: Integer; //local variables
begin
for xx:=0 to 29 do
for yy:=0 to 39 do
begin
Images[xx,yy]:=Timage.Create(Form1);
Images[xx,yy].Canvas.Rectangle(0,0,17,17);
Images[xx,yy].Left:=xx*16;
Images[xx,yy].Top:=yy*16;
end;
end;
end.
Run Code Online (Sandbox Code Playgroud)
我总是得到错误:" Project Project1.exe引发了异常类EClassNotFound并显示消息"未找到TImage".进程已停止.使用步骤或运行继续 "
我在互联网上尝试过其他代码,如:
Delphi:TImage.Create导致访问冲突
http://www.delphi-central.com/tutorials/memory_game_2.aspx …
可能重复:
睡眠时间小于一毫秒
如何使程序睡眠纳秒?我搜索了互联网,我发现了几种睡眠方式,但是:
windows.h的Sleep()睡眠时间只有几毫秒.
ctime的nanosleep()是仅适用于POSIX系统,而我使用的是Windows.
我也试过这个:
int usleep(long usec)
{
struct timeval tv;
tv.tv_sec = usec/1000000L;
tv.tv_usec = usec%1000000L;
return select(0, 0, 0, 0, &tv);
};
Run Code Online (Sandbox Code Playgroud)
但Code :: Blocks说:
obj\Release\main.o:main.cpp|| undefined reference to `select@20'|
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,但一切都失败了.我该怎么办?
如何清除J2ME中的文件以使其变空(没有内容)?
所有输出流(OutputStream, DataOutputStream, PrintStream...)
只能write()将内容添加到文件中,而我看不到删除文件中的字节/字节.
我使用Netbeams 7.0.1
感谢您的帮助
我想制作一个程序,即使它在任何时候都不活动,也可以捕获键盘事件。Hooks 太复杂了,我需要做很多事情才能使其正常工作(制作 DLL、读取它等等),所以我决定继续使用热键。
但现在我有一个问题。注册热键会禁用键盘上的按键,因此我只能将按键发送到程序,而无法在任何其他程序(例如记事本)上键入。
这是我的代码:
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char* argv[]) {
RegisterHotKey(NULL, 1, NULL, 0x41); //Register A
MSG msg = {0};
while (GetMessageA(&msg, NULL, 0, 0) != 0) {
if (msg.message == WM_HOTKEY) {
cout << "A"; //Print A if I pressed it
}
}
UnregisterHotKey(NULL, 1);
return 0;
}
// and now I can't type A's
Run Code Online (Sandbox Code Playgroud)
这个问题有什么简单的解决办法吗?谢谢
我有两个代码:
正常:
int* p[5];
for (int i=0;i<5;i++){
int s = rand()%25;
p[i]=&s;
}
Run Code Online (Sandbox Code Playgroud)
动态:
int* p[5];
for (int i=0;i<5;i++){
int* s = new int;
*s = rand()%25; //Edit: typo, I didn't want to make a random pointer
p[i]=s;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我打印数组p,p[i]首先然后:*p[i]在它之后,我得到:
static dynamic
0x22ff04 7 0x22ff30 7
0x22ff04 7 0x22ff24 14
0x22ff04 7 0x22ffa6 2
0x22ff04 7 0x22ff89 8
0x22ff04 7 0x22ff13 21
Run Code Online (Sandbox Code Playgroud)
现在为什么p中的所有元素都指向同一位置以进行正常声明,而在动态声明中创建了多个对象?
为什么是这样?