小编For*_*vin的帖子

如何将C++函数公开给lua脚本?

我刚刚成功创建了一个lua项目.(到目前为止,运行lua脚本的简单代码.)
但是,我现在如何为lua脚本创建c ++函数和c ++变量?

举个例子:

int Add(int x, int y) {
    return x + y;
}
Run Code Online (Sandbox Code Playgroud)

float myFloatValue = 6.0
Run Code Online (Sandbox Code Playgroud)

我对c ++很新,所以我真的希望它不会太复杂.这是我到目前为止得到的代码顺便说一下:

#include "stdafx.h"
extern "C" {
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
}

using namespace System;

int main(array<System::String ^> ^args)
{
    lua_State* luaInt;
    luaInt = lua_open();
    luaL_openlibs (luaInt);
    luaL_dofile (luaInt, "abc.lua");
    lua_close(luaInt);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ lua function

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

C++:通过进程ID,进程句柄和标题名称从进程中获取Window Handle的唯一窗口的最佳方法

我正在寻找在以下情况下获得窗口句柄的最佳方法:
我有进程ID进程句柄,我知道窗口titlename,我知道该进程只有一个窗口.

那我该怎么办呢?FindWindowEnumWIndows

c++ winapi window-handles

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

C++我是否必须为每个源文件包含标准库?

我现在有点困惑,因为我计划在我的一个项目中首次包含多个源文件和头文件.
所以我想知道这是否是正确的方法?
我是否必须在每个直接使用它的源文件中包含字符串标头?
那么Visual C++要我包含的"stdafx.hpp"标题呢?

这会是要走的路吗?

main.cpp中

#include "stdafx.hpp"
#include <string> //?
#include <stringLib1.h>
#include <stringLib2.h>
using std::string;

//use a windows.h function here
//use a stringLib1 function here
//use a stringLib2 function here
Run Code Online (Sandbox Code Playgroud)

stringLib1.h

#include "stdafx.hpp"
#include <string>
using std::string;

class uselessClass1
{
public:
    string GetStringBack1(string myString);
};
Run Code Online (Sandbox Code Playgroud)

stringLib1.cpp

#include "stdafx.hpp"

string uselessClass1::GetStringBack1(string myString) {
    return myString;
}
Run Code Online (Sandbox Code Playgroud)

stringLib2.h

#include "stdafx.hpp"
#include <string>
using std::string;

class uselessClass2
{
public:
    string GetStringBack2(string myString);
};
Run Code Online (Sandbox Code Playgroud)

stringLib2.cpp

#include "stdafx.hpp"

string uselessClass2::GetStringBack2(string myString) { …
Run Code Online (Sandbox Code Playgroud)

c++ include standard-library header-files precompiled-headers

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

使用QPython连接到接入点?

我的手机有一个简单的问题:当我从wifi热点断开连接时,我的手机不会自动重新连接,因为它总是认为没有互联网.这是因为我的防火墙.我猜测Android手机试图ping服务器以检查是否存在Internet连接.

所以我现在要做的就是编写一个简单的脚本,不断扫描Wifi网络,直到它找到我过去连接过的网络.
它可能是一个非常简单的脚本,但我找不到实际连接到接入点的方法.

import threading
import androidhelper
droid = androidhelper.Android()
knownAPs = ["home-wifi","workAP"]

def autoConnect():
    threading.Timer(5.0, autoConnect).start()
    droid.wifiStartScan()
    nearbyAPs = droid.wifiGetScanResults().result
    for i, curAP in enumerate(nearbyAPs):
        if curAP['ssid'] in knownAPs:
            # ?connect to a wifi?
autoConnect()
Run Code Online (Sandbox Code Playgroud)

我在文档中遗漏了什么吗?知道我怎么能做到这一点?

编辑:
据说可以在QPython中使用Kivy库.我找不到一个如何实现它的例子.但也许这个问题可以解决吗?

python android android-wifi sl4a qpython

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

Bash regex ungreedy匹配

我有一个应该在字符串中的多个位置匹配的正则表达式模式.我想将所有匹配组放入一个数组中,然后打印每个元素.

所以,我一直在尝试这个:

#!/bin/bash

f=$'\n\tShare1   Disk\n\tShare2  Disk\n\tPrnt1  Printer'
regex=$'\n\t(.+?)\\s+Disk'
if [[ $f =~ $regex ]]
then
    for match in "${BASH_REMATCH[@]}"
    do
        echo "New match: $match"
    done
else
    echo "No matches"
fi
Run Code Online (Sandbox Code Playgroud)

结果:

New match: 
    Share1   Disk
    Share2  Disk
New match: Share1   Disk
    Share2 
Run Code Online (Sandbox Code Playgroud)

预期的结果将是

New match: Share1
New match: Share2
Run Code Online (Sandbox Code Playgroud)

我认为它不起作用,因为我.+?匹配贪婪.所以我查看了如何使用bash正则表达式实现这一点.但是每个人似乎都建议在perl正则表达式中使用grep.

但肯定还有另一种方式.我想的可能是[^\\s]+......但是输出的结果是:

New match: 
    Share1   Disk
New match: Share1
Run Code Online (Sandbox Code Playgroud)

... 有任何想法吗?

regex bash regex-greedy

7
推荐指数
2
解决办法
1304
查看次数

Bash:执行前突出显示命令(set -x)

我有一个 bash 脚本,它执行大约 20 个命令,出于调试目的,我发现自己经常滚动输出。\n不幸的是 bash 没有告诉我输出的哪一部分是哪个命令的一部分。\n当我在脚本中使用“set -x”时,它至少会打印一些有关其刚刚执行的信息,但我不太喜欢它生成的输出。

\n\n

例如,如果我有这个脚本:

\n\n
#!/bin/bash\n\nset -x\necho "foo"\nif [ "$ASD" == "QWE" ] ; then\n    echo "bar"\nfi\n
Run Code Online (Sandbox Code Playgroud)\n\n

我希望输出是这样的:

\n\n
\n

回显“foo”
\n foo
\n 回显“bar”
\n bar

\n
\n\n

或者可能:

\n\n
\n

echo "foo"
\n foo
\n if [ "value_of_ASD" == "QWE" ] ; 然后
\n echo "bar"
\n bar
\n fi

\n
\n\n

除了用粗体打印命令之外,用颜色突出显示也可以。但我不只是想在命令前面有“+”字符,而且我也不喜欢 if 语句像 那样显示\'[\' value_of_ASD == QWE \']\'

\n\n

我怎样才能用 bash 来实现这一点?

\n\n

目前输出看起来像这样:

\n\n
+ echo …
Run Code Online (Sandbox Code Playgroud)

linux bash shell sh

7
推荐指数
2
解决办法
2152
查看次数

在坐标系中查找大多数未填充的点

我有一个基本代表一个屏幕的坐标系.
我有任意数量的职位.例如:

population = [
    {x: 100.44, 200.54},
    {x: 123.45, 678.9},
    {x: 1300.23, 435.81},
    {x: 462.23, 468.37},
    {x: 956.58, 385.38},
];
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种找到最无人居住点的算法.

白色迷你圆圈代表人口和红色Xs标记点,对我来说似乎非常无人居住:

截图

我的目标是运行一个动画,随机将所有这些白色迷你圆圈移动到随机方向,一旦圆圈离开屏幕,它就会被传送到最无人居住的地点,这样大空空间的数量就会减少.

我试图通过计算从每个整数坐标到每个圆的距离之和,然后选择具有最高距离和的坐标来实现这一点.仅此一点似乎已经非常耗费CPU,但我注意到这个算法会使圆圈传送到我的坐标系的边界.所以我还添加了从每个整数坐标到每个边界整数坐标的距离之和.那时,脚本基本上冻结了.所以这绝对不是正确的方法.

我的想法已经不多了.我想我不需要一个完美的算法,而是一个在精度和性能之间保持平衡的算法.最后,我希望能够在1920x1080画布上每秒多次运行该算法,其中大约有80个这样的小环.理想情况下,算法会有一个参数来调整精度,从而调整它使用的CPU时间.

这是我上面提到的方法.我注释掉导致脚本冻结的行:

let circles = [
    {x: 60.44, y: 190.54},
    {x: 103.45, y: 18.9},
    {x: 390.23, y: 135.81},
    {x: 302.23, y: 28.37},
    {x: 56.58, y: 85.38},
]

function getDistance(p1, p2) {
    return Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2)
}
function drawCircle(ctx,x,y,r,c) {
    ctx.beginPath()
    ctx.arc(x, y, r, 0, 2 * Math.PI, …
Run Code Online (Sandbox Code Playgroud)

javascript point coordinates coordinate-systems

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

如何为WhatsApp的.crypt12格式生成页眉和页脚?

WhatsApp将所有消息存储在sqlite文件中,该文件首先经过zlib压缩,然后经过AES加密。

解密/解压缩可以很容易地完成,例如:

def decrypt(db_file, key_file):
    """ Function decrypt Crypt12 Database """
    try:
        with open(key_file, "rb") as fh:
            key_data = fh.read()

        key = key_data[126:]
        with open(db_file, "rb") as fh:
            db_data = fh.read()

        iv = db_data[51:67]
        aes = AES.new(key, mode=AES.MODE_GCM, nonce=iv)
        with open("msgstore.db", "wb") as fh:
            fh.write(zlib.decompress(aes.decrypt(db_data[67:-20])))

        print db_file + " decrypted, msgstore.db created."
    except Exception as e:
print "An error has ocurred decrypting the Database:", e
Run Code Online (Sandbox Code Playgroud)

但是,如果要撤消该过程,则必须生成页眉,页脚和IV。起初我以为您可以从另一个已经存在的crypt12文件中复制它们,如下所示:

def encrypt(db_file, key_file, db_cript):
    """ Function encrypt msgstore Database """
    try:
        with open(key_file, "rb") …
Run Code Online (Sandbox Code Playgroud)

python encryption aes whatsapp crypt12

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

C++:调用函数的代码注入

首先,我不想注入一个DLL.我想使用WriteProcessMemory()注入代码(如果这是可能的话).我已经使用过ReadProcessMemory()所以我认为写作并不是什么大问题.
好吧,让我们说TargetProgram.exe + D78C612有一个功能,
让我们说它可以像这样调用:

push eax
push [esp+08]
push edx
push 00
push TargetProgram.exe+AF76235
push 04
call TargetProgram.exe+D78C612
Run Code Online (Sandbox Code Playgroud)

我将如何使用WriteProcessMemory()完成此操作?
我的意思是我在哪里可以找到一个部分,我可以在其中注入我的代码而不会覆盖重要的东西.最重要的是,我该如何调用该函数?
只需在活动例程中跳转到我的代码,然后跳回并删除它?但是我怎么能找到这个例程呢?
这么多问题,我不知道如何开始...我希望你能帮助我.:)
如果你有时间我真的想看一个函数调用注入的示例代码.

c++ code-injection function-call

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

Socat 伪终端:可以使用数据线(DTR、RTS 等)吗?

我正在使用 socat 创建一个虚拟串行端口。

socat -d -d pty,echo=0,raw pty,echo=0,raw
Run Code Online (Sandbox Code Playgroud)

到目前为止,效果符合预期。使用 echo/cat 我可以发送/接收文本等。
但是像 DTR 或 RTS 这样的信号线呢?我如何使用 pty 获取/设置这些行的状态?这可能吗?我在任何地方都找不到任何关于它的提及。

linux serial-port pty

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