该SetClipboardData功能需要HANDLE参考; 我在转换字符串以便在函数中使用时遇到问题.
这是我的代码:
char* output = "Test";
HLOCAL hMem = LocalAlloc( LHND,1024);
char* cptr = (char*) LocalLock(hMem);
memcpy( cptr, output, 500 );
SetClipboardData(CF_TEXT, hMem);
LocalUnlock( hMem );
LocalFree( hMem );
CloseClipboard();
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么,做到这一点的正确方法是什么?
谢谢.
我正在学习 SwiftUI 并且对 Image(name: String) 有问题。
这是我的内容视图
var body: some View {
VStack {
Image("test")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 75, alignment: .center)
.clipped()
List(retriever.items) { item in
Row(coin: item)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个项目时,我收到这条消息“线程 1:致命错误:在主包中找不到名为 test 的图像”
所以,我在下面尝试过。
但是,结果是一样的。
该图像位于此路径“项目根目录/图像/test.jpg”中
奇怪的是,这段代码运行良好。
Image(uiImage: UIImage(named: "test.jpg")!)
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
我正在尝试使用GN从源代码构建ChromeDriver的可执行目标,我使用Depot Tools 将其安装在我的 PATH 目录中,但是当我运行时出现此错误:gn BUILD.gn
gn.py: Could not find checkout in any parent of the current path.
This must be run inside a checkout.
Run Code Online (Sandbox Code Playgroud)
如果我没有正确设置,我不确定是否需要检查整个 Chromium 目录?
更新
我已经在gn_tool的帮助下下载了 gn 的工作二进制文件。
我仍然不确定我应该为“构建 chromedriver 目标”运行什么命令,因为现在我尝试的每个命令似乎都给我这个错误:
ERROR Can't find source root. I could not find a ".gn" file in the current directory or any parent,and the --root command-line argument was not specified.
Run Code Online (Sandbox Code Playgroud)
...即使在我运行 gn 的目录中有一个 BUILD.gn 文件...
我正在努力找出在 WM_PAINT 期间将纯 RGBA 值数组转储到 Win32 窗口的客户区的正确方法。我有以下代码,但它看起来已经很复杂,我什至还没有完成:
case WM_ERASEBKGND:
return 1;
case WM_PAINT:
{
PAINTSTRUCT paintInfo{};
HDC device = BeginPaint(window, &paintInfo);
if (device == nullptr)
throw runtime_error(RG_LOCATION());
ScopeExit endPaint([&] { EndPaint(window, &paintInfo); });
HDC offscreenDevice = CreateCompatibleDC(device);
ScopeExit deleteOffscreenDevice([&] { DeleteDC(offscreenDevice); });
HBITMAP offscreenBitmap = CreateCompatibleBitmap(device, Distance(paintInfo.rcPaint.left, paintInfo.rcPaint.right),
Distance(paintInfo.rcPaint.top, paintInfo.rcPaint.bottom));
ScopeExit deleteOffscreenBitmap([&] { DeleteObject(offscreenBitmap); });
HBITMAP previousBitmap = reinterpret_cast<HBITMAP>(SelectObject(offscreenDevice, offscreenBitmap));
// now I need to blit the available pixel data...
vector<array<uint8_t, 4>> mypixels;
// ...onto the client area of the …Run Code Online (Sandbox Code Playgroud) 我试图通过使用指针来分配1 KiB的内存
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
std::cout << pmc.WorkingSetSize << " Current physical memory used by the process" << std::endl;
int a = pmc.WorkingSetSize;
char *test= new char[1024];
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
int b = pmc.WorkingSetSize;
std::cout << "Actual allocated " << (b - a) / 1024 << std::endl;
Run Code Online (Sandbox Code Playgroud)
问题是每次我运行这个代码它似乎分配在100 KiB到400 KiB之间的任何地方我使用char,因为它的大小为1个字节
我在具有16 GB RAM的Windows 10上使用c ++ builder 10.2 Tokyo.如果我跑
uint64_t FreeMBs()
{
MEMORYSTATUSEX status;
status.dwLength = sizeof(status);
GlobalMemoryStatusEx(&status);
return status.ullAvailPhys / (1024 * 1024);
}
Mem0=FreeMBs();
std::vector<int64_t> v;
v.resize(1000000000); // 1 billion
Mem1=FreeMBs();
Run Code Online (Sandbox Code Playgroud)
Mem0-Mem1大约为8 GB.
如果,而不是上述,我跑
Mem0=FreeMBs();
int64_t v=new int64_t[1000000000};
Mem1=FreeMBs();
Run Code Online (Sandbox Code Playgroud)
然后Mem0-Mem1大约为零.如果我使用malloc为数组保留空间,Mem1仍然或多或少地与Mem0保持不变.我尝试设置v [1000000000-1] = 0来查看是否触发了某些内容但它没有触发.
为什么不考虑阵列?
子进程是作业的一部分,由创建作业的进程启动。父进程尚未设置作业属性以允许脱离作业。需要在 JOB 上设置“JOB_OBJECT_LIMIT_BREAKAWAY_OK”标志以允许子进程脱离作业,但未设置该标志。
子进程可以更改此作业属性并设置标志 JOB_OBJECT_LIMIT_BREAKAWAY_OK 以便它或其子进程可以从 JOB 中自由运行。在网上搜索但没有找到是否可以做到这一点。
已经引用的链接
https://learn.microsoft.com/en-us/windows/desktop/procthread/job-objects和https://learn.microsoft.com/en-us/windows/desktop/procthread/process-creation-flags
没有说我们是否可以做到这一点。或者如果需要的话该怎么做。
我编写了一个示例应用程序,其中父进程创建一个没有 JOB_OBJECT_LIMIT_BREAKAWAY_OK 标志的作业。并编写了由家长启动的示例应用程序。在这个孩子中,我尝试设置作业属性,如下所示:
if (bInJob)
{
JOBOBJECT_EXTENDED_LIMIT_INFORMATION info1 = {};
QueryInformationJobObject(NULL, JobObjectBasicLimitInformation, &info1.BasicLimitInformation, sizeof(info1.BasicLimitInformation), NULL);
DWORD dwLimitFlags = info1.BasicLimitInformation.LimitFlags;
SetLastError(0);
info1.BasicLimitInformation.LimitFlags |= JOB_OBJECT_LIMIT_BREAKAWAY_OK;
if (SetInformationJobObject(NULL, JobObjectExtendedLimitInformation, &info1, sizeof(info1)))
{
cout << "failed";
}
DWORD fileError = GetLastError();
JOBOBJECT_BASIC_LIMIT_INFORMATION info = {};
QueryInformationJobObject(NULL, JobObjectBasicLimitInformation, &info, sizeof(info), NULL);
dwLimitFlags = info.LimitFlags;
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,并且 JOB 属性保持不变。
我正在尝试构建一个算法交易程序.程序的执行流程如下:
Server sends data via websocket -> Python program receives it and sends it to C++ program -> C++ program processes the data and sends some data to Python code -> Python code sends packets to Server
Run Code Online (Sandbox Code Playgroud)
我不是用C++构建整个东西的原因是因为Broker的API只支持Python,如果我切换到Python,我就无法执行我希望执行的操作.
数据的频率每秒至少约为50kb(二进制和Json).到目前为止,我发现了以下替代方案:
用C++代码嵌入Python.这看起来很棒,但我不确定是否能够导入整个库并在C++中使用类/方法(代理的客户端).
通过发送数据包进行通信(延迟是这里的问题)
将接收到的数据放在SQL数据库中,每隔X ms让C++查询一次.(再次,延迟)
有没有更好的方法来做到这一点?
我正在尝试将控制台应用程序的字体更改为光栅字体。这是字体的图像以及您可以在哪里设置它:
我的问题是如何在我的 C++ 应用程序中执行此操作?它有特定的名称吗?这是我到目前为止:
CONSOLE_FONT_INFOEX cf;
cf.cbSize = sizeof cf;
cf.dwFontSize.X = 6;
cf.dwFontSize.Y = 8;
wcscpy_s(cf.FaceName, L"NEED NAME HERE");
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), 0, &cf);
Run Code Online (Sandbox Code Playgroud)
“光栅”、“光栅字体”、“光栅字体”、“光栅字体”、“光栅字体”、“字体光栅”、“字体光栅”、“字体光栅”、“字体光栅”和“字体”都没有工作我。有没有不同的方式来设置它或它的名称不同?
我正在寻找为 C++ 项目编写一个键盘钩子。我找到了一些代码,但在没有完全理解它的情况下不想使用它:
HHOOK _hook;
KBDLLHOOKSTRUCT kbdStruct;
LRESULT __stdcall HookCallback(int ncode, WPARAM wParam, LPARAM lparam)
{
if(ncode>=HC_ACTION)
{
if((wParam == WM_KEYDOWN) || (wParam == WM_SYSKEYDOWN))
{
kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
DWORD dwMsg = 1;
dwMsg += kbdStruct.scanCode << 16;
dwMsg += kbdStruct.flags << 24;
char key[16];
GetKeyNameText(dwMsg,key,15);
if((GetKeyNameState(VK_CAPITAL)& 0x0001) == 0)
{
for (int i=0; i<10)key[i] = tolower(key[i]);
ReturnKeyPressed(key);
}
else
{
ReturnKeyPressed(key);
}
}
}
return CallNextHookEx(_hook,nCode,wParam,lParam);
}
void SetHook()
{
_hook = SetWindowsHookEx(WH__KEYBOARD_LL,HookCallback,Null,0);
}
Run Code Online (Sandbox Code Playgroud)
我不明白 nCode 是什么。其他参数从哪里来?来自绝对 C++ 初学者的问候:)。