这是我尝试实现的一些代码.其目的是创建一个透明,全屏,无边框,点击并始终位于其他窗口之上的表单层.然后,它允许您使用directx在其顶部绘制,否则保持透明.
不起作用的部分是点击部分和directx渲染.当我运行它时,我基本上在所有其他窗口前面都有一个看不见的力场,并且必须使用alt-tab到Visual Studio快速按下ALT F5并结束调试(所以至少总是在顶部和透明度工作).我一直想弄清楚为什么那些部件不起作用,但我的新手c#技能让我失望.希望有人能发现原因并提供修改.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Globalization;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
using System.Threading;
namespace MinimapSpy
{
public partial class Form1 : Form
{
private Margins marg;
//this is used to specify the boundaries of the transparent area
internal struct Margins
{
public int Left, Right, Top, Bottom;
}
[DllImport("user32.dll", SetLastError = true)]
private static extern UInt32 GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
static extern …Run Code Online (Sandbox Code Playgroud) 如何将字节数组转换为int数组?我有一个包含144个项目的字节数组,由于我的经验不足,我尝试过的方法效率很低.我很抱歉,如果以前已经回答过,但我无法在任何地方找到一个好的答案.
我有一个C程序,我可以通过终端访问和交互(通常来自Linux机器上的SSH).我一直试图找到问题的解决方案,在我关闭终端/注销后,流程以它结束(程序基本上要求一些选项然后进行业务,不需要进一步的交互,所以我想拥有它在我注销SSH之后继续运行).
在Linux中有一些方法可以避免这种情况,例如"屏幕",但我想用C编程,而不依赖于屏幕等已安装的软件包 - 即使这意味着重新发明轮子.
到目前为止,我理解fork()成为守护进程的标准琐碎方法,所以任何人都可以帮助我完成允许上述过程发生的代码吗?
在父母内部:
main()
{
//Do interactive stuff
signal(SIGCHLD, SIG_IGN); //stops the parent waiting for the child process to end
if(fork())
exit(0);
// and now the program continues in the child process
Run Code Online (Sandbox Code Playgroud)
我现在可以注销关闭原始shell的SSH了......孩子继续工作!
在孩子内:
//Continue with processing data/whatever the program does (no input/output to terminal required)
exit(0);
Run Code Online (Sandbox Code Playgroud) 我正在搜索文件系统并使用grep.我看到一切正常,直到出现此错误:
Grep: /proc/sysrq-trigger: Input/output error
Run Code Online (Sandbox Code Playgroud)
我已经在网上的各个地方找到了信息,其他地方遇到了同样的问题,但是没有任何地方可行的.我尝试了2>/dev/null,它压制了错误,但没有"跳过文件",这实际上是我希望它会做的.相反,它只是停止进程(这是一个利用grep的find/sed进程).我认为有一种方法可以使用grep指定要排除的文件,但我希望可能有更强大和更优雅的解决方案.
我写了一个程序,我通过SSH连接到盒子后运行.它有一些用户交互,例如在提示后选择选项,通常我等待它执行的进程在注销之前完成关闭终端并结束程序.但是现在这个过程非常冗长,我不想在登录时等待,所以我怎么能在C中实现这个解决方法呢?
我使用int数组来保存一长串整数.对于这个数组的每个元素,我想检查它是否为1,如果是,那么只做与1相关的东西,否则如果它是2,则执行与2相关的其他内容,依此类推存储在数组中的每个值.我想出了下面的代码,但它没有按预期工作,有什么我想念的吗?发生的事情是只考虑数组的第一个值.
int[] variable1 = MyClass1.ArrayWorkings();
foreach (int i in variable1)
{
if (variable1[i] == 1)
{
// arbitrary stuff
}
else if (variable1[i] ==2)
{
//arbitrary stuff
}
}
Run Code Online (Sandbox Code Playgroud) 介绍
目前我正在使用某人的类来读取内存中的字节(通过指针).到目前为止我的代码完美无缺,我真的不想改变类的设置方式(如果可行)(因为它可以工作),但希望可以对类和我的代码进行一些小的调整以使其高效.
我目前取得的成就:
从内存中的指针地址开始,在该地址读取一个字节,将数据添加到数组,将原始地址加1,这样我们现在可以读取下一个地址(例如,原始地址是24004,一旦存储了字节,增量1和下一个要读取的地址变为24005).
读取下一个地址(24005)处的字节,将其添加到同一个数组,将该地址加1(读取后面的数据变为24006).
等等,进行固定次数的迭代(大约10,000次).
问题:
一次接一次地对readprocessmemory进行10,000次调用会导致系统延迟20秒,同时还会影响其业务.
我希望能实现的目标:
仅执行一次Readprocessmemory,指定要读取的10,000字节数据(而不是一次只进行10,000次迭代),将其保存到数组中,格式与之前使用的单个字节相同(我知道相反数组{0}(1)(2)..等等..我现在只有数组{0},所以我想我需要一种有效的方法将这个非常大的数字分成10,000个数字(在另一个数组中) ))存储在每个地址的数据是整数.因此对于5个地址:数组{12345}变为{1} {2} {3} {4} {5}.例如,1 2 3 4或5也可以是1 200 40 43或20.
理想情况下,如果我可以挥动我的新手魔杖,它会看起来像这样(下面的课程和我到目前为止的课程):
迭代码:
private void label1_Click(object sender, EventArgs e)
{
int[] valuesSeperated[200];
List<byte> PreArray = new List<byte>();
Process[] test = Process.GetProcessesByName("MyProcess"); //Get process handle
int baseAddress = test[0].MainModule.BaseAddress.ToInt32(); //Get base address
byte ReadX = MyClass.ReadPointerByte("MyProcess", BaseAddress, new int[] { 0xc, 0x0, 0x2 }); //call memory reading function (including memory offsets)
PreArray.Add(ReadX);
byte[] PreArrayToInt = PreArray.ToArray();
int[] MYConvertedBytes = PreArray ToInt.Select(x …Run Code Online (Sandbox Code Playgroud) 我有:
public static int[] ArrayWorkings()
Run Code Online (Sandbox Code Playgroud)
我可以从任何地方使用MyClass.ArrayWorkings()快乐地调用它.但我希望通过需要一个参数来构建一些额外的功能,例如:
public static int[] ArrayWorkings(int variable)
Run Code Online (Sandbox Code Playgroud)
我得到错误没有重载的方法ArrayWorkings,需要0参数.为什么是这样?
我试图找到所有出现的具有指定字符串的文件,然后清除所有这些文件的内容。因此,其中包含“stringtofind”的文件随后将是一个空文件。
为此,我尝试了以下操作,但出现错误:
出现以下错误: find: missing argument to `-exec'
find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l -exec sed -i '/./d'
Run Code Online (Sandbox Code Playgroud)
使用以下我得到错误:
grep: /nis
/tset.any
/test2.file
/测试.txt
: 没有这样的文件或目录 sed: 没有输入文件
find / -maxdepth 1 -xdev -type f -print | xargs -0 grep -i "stringtofind" -l | xargs sed -i '/./d'
Run Code Online (Sandbox Code Playgroud) 我把它放在php.ini文件中:
disable_functions="popen,exec,system,passthru,proc_open,shell_exec,show_source,phpinfo"
Run Code Online (Sandbox Code Playgroud)
但是我仍然可以调用它们(经过测试的exec和shell_exec.我已经多次重启网络服务器了.
(在windows下).