小编Ase*_*esh的帖子

如何在C中将字符串复制到剪贴板?

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)

我在这里做错了什么,做到这一点的正确方法是什么?

谢谢.

c windows clipboard winapi

28
推荐指数
2
解决办法
3万
查看次数

SwiftUI 在主包中找不到命名的图像

我正在学习 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 的图像”

所以,我在下面尝试过。

  • 图像(“测试.jpg”)
  • 图像(“图像/测试”)
  • 图像(“图像/测试.jpg”)

但是,结果是一样的。

该图像位于此路径“项目根目录/图像/test.jpg”中


奇怪的是,这段代码运行良好。

Image(uiImage: UIImage(named: "test.jpg")!)
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

ios swiftui

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

如何使用 Google Chromium GN 构建目标?

我正在尝试使用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 文件...

chromium selenium-chromedriver gn

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

设置窗口像素的正确(且无闪烁)方法?

我正在努力找出在 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)

c++ winapi gdi

6
推荐指数
2
解决办法
624
查看次数

尝试动态内存分配c ++

我试图通过使用指针来分配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个字节

c++ winapi

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

GlobalMemoryStatusEx不考虑新数组

我在具有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来查看是否触发了某些内容但它没有触发.

为什么不考虑阵列?

c++ windows winapi

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

由JOB中的进程启动的子进程是否可以设置JOB属性以脱离作业?

子进程是作业的一部分,由创建作业的进程启动。父进程尚未设置作业属性以允许脱离作业。需要在 JOB 上设置“JOB_OBJECT_LIMIT_BREAKAWAY_OK”标志以允许子进程脱离作业,但未设置该标志。

子进程可以更改此作业属性并设置标志 JOB_OBJECT_LIMIT_BREAKAWAY_OK 以便它或其子进程可以从 JOB 中自由运行。在网上搜索但没有找到是否可以做到这一点。

已经引用的链接

https://learn.microsoft.com/en-us/windows/desktop/procthread/job-objectshttps://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 属性保持不变。

c++ windows winapi visual-c++

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

在C++和Python程序之间共享数据的最快方法?

我正在尝试构建一个算法交易程序.程序的执行流程如下:

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).到目前为止,我发现了以下替代方案:

  1. 用C++代码嵌入Python.这看起来很棒,但我不确定是否能够导入整个库并在C++中使用类/方法(代理的客户端).

  2. 通过发送数据包进行通信(延迟是这里的问题)

  3. 将接收到的数据放在SQL数据库中,每隔X ms让C++查询一次.(再次,延迟)

有没有更好的方法来做到这一点?

c++ python c++11

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

将控制台应用程序中的字体更改为光栅字体

我正在尝试将控制台应用程序的字体更改为光栅字体。这是字体的图像以及您可以在哪里设置它:

命令截图

我的问题是如何在我的 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++ winapi

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

C++ 键盘钩子 - 参数 nCode 是什么意思?

我正在寻找为 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++ 初学者的问候:)。

c++ keyboard hook winapi keylogger

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