对文件操作怎么进行,求助求助
想用代码命令来实现对文件的操作,提取文件里面的数据,直接提取统计写入到一个文件里面,
或者直接就是连接数据库
求助求助 举几个例子
人造人 发表于 2021-11-9 21:23
举几个例子
就是这边有一堆ENG雕刻文件吗,然后运行文件之后会出来一个雕刻时间,现在就是说要统计那个雕刻时间,就想着用程序来实现提取那个时间,而不是自己手动打开每个文件嘛,就大概这样子 就是要用代码命令 来实现一堆文件的运行然后统计我照片里面的那个雕刻时间,友友们{:10_254:} Gacy 发表于 2021-11-9 21:28
就是要用代码命令 来实现一堆文件的运行然后统计我照片里面的那个雕刻时间,友友们
这个时间还可以通过什么方法得到?执行某条命令?
用程序读取这个框框里面的文字,不是很好弄,如果可以,要避免这么做
如果无法避免,那就又要去翻 windows 的 api 了,就是读取这个窗口中的文字么,我感觉能做到
但是,如果可以不这么做的话,真的不想这么做,有其他方案就尽量避免选择这个方案
还有,必须用 C/C++ ?
人造人 发表于 2021-11-9 21:38
这个时间还可以通过什么方法得到?执行某条命令?
用程序读取这个框框里面的文字,不是很好弄,如果可以 ...
不是必须C或者C++,其他都行只要能实现,那个雕刻时间是用它那个软件来计算的,咱就是用程序读取那个数据{:10_254:} Gacy 发表于 2021-11-9 21:41
不是必须C或者C++,其他都行只要能实现,那个雕刻时间是用它那个软件来计算的,咱就是用程序读取那个数据 ...
用程序读取那个框框里面的文字?
没有别的方法得到那个时间?
人造人 发表于 2021-11-9 21:44
用程序读取那个框框里面的文字?
没有别的方法得到那个时间?
那个时间是需要它自己的软件运行出来的,就是想要命令一直去重复打开运行那个操作,然后把那个时间给弄出来 Gacy 发表于 2021-11-9 22:02
那个时间是需要它自己的软件运行出来的,就是想要命令一直去重复打开运行那个操作,然后把那个时间给弄出 ...
这就不好弄了,貌似 lua 擅长这个?
反正用 C/C++ 不好整
人造人 发表于 2021-11-9 22:08
这就不好弄了,貌似 lua 擅长这个?
反正用 C/C++ 不好整
不用C C++也行,就是搞不懂要发哪块区域就随便发了一个{:10_266:}
要怎么实现呢 Gacy 发表于 2021-11-9 22:11
不用C C++也行,就是搞不懂要发哪块区域就随便发了一个
要怎么实现呢
这个不好整
这得靠windows API去读取窗口中的文字了吧,但是不确定有没有这样的API。 人造人 发表于 2021-11-9 22:13
这个不好整
大佬你看能不能整一个,这个事情就比较急,会有重谢{:10_254:} Gacy 发表于 2021-11-9 22:24
大佬你看能不能整一个,这个事情就比较急,会有重谢
我昨天自己学API的时候就发现了一个函数
正好是可以用到C里面的
GetWindowText(hwnd, pszBuffer, iMaxLength);
作用:可以获得一个指定窗口的文本
参数:hwnd 窗口的句柄
pszBuffer 一个存放将要被复制的以零结尾的字符串的指针
iMaxLength 指定了该函数往pszBuffer参数中复制文本内容的长度
该函数会返回被复制的字符串的原本的长度
可以通过以下函数来提前确定要复制的文本的长度
iLength = GetWindowTextLength(hwnd);
当然可能这两个函数没什么用 这个程序也许你也得不到那个子窗口的句柄 临时用户3.14159 发表于 2021-11-9 22:40
我昨天自己学API的时候就发现了一个函数
正好是可以用到C里面的
API这咱也没学过呀{:10_254:} Gacy 发表于 2021-11-9 22:49
API这咱也没学过呀
这个我也没办法 只是昨天在书上刚好翻到了这两个函数
如果你可以获取那个你所需要的信息的窗口的句柄(这个可能是会变化的)
那么应该就有办法可以获取其中的信息了 Gacy 发表于 2021-11-9 22:49
API这咱也没学过呀
不过我自己有看了一下你的要求
大概是随着时间的推移 这个雕刻的时间会跟着变化
这样的话我就觉得可以用API弄个计时器出来 然后把那个软件测出来的时间给输进去 就可以了
不过这个东西的雕刻时间应该也会随着一些奇奇怪怪的因素而改变(猜的)
所以还是实时获取那个子窗口的文本比较好吧? 本帖最后由 人造人 于 2021-11-9 23:28 编辑
比想象的要容易好多
模板在这了,自己照着这个改代码吧
target.c
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
MessageBox(NULL, "hello world!", "target", MB_OK);
return 0;
}
read_window_text.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <windows.h>
#define ID_MSGBOX_STATIC_TEXT 0x0000ffff
void read_target(void) {
pid_t pid = fork();
if(!pid) {
execl("./target.exe", "./target.exe", NULL);
exit(-1);
}
HWND hwnd = NULL;
char buff;
while(!hwnd) {hwnd = FindWindow(NULL, "target"); usleep(100000);}
GetDlgItemText(hwnd, ID_MSGBOX_STATIC_TEXT, buff, 1024);
puts(buff);
HWND child = FindWindowEx(hwnd, 0, "Button", NULL);
RECT rect; GetWindowRect(child, &rect);
SendMessage(child, WM_LBUTTONDOWN, 0, MAKELPARAM((rect.right - rect.left) / 2, (rect.bottom - rect.top) / 2));
SendMessage(child, WM_LBUTTONUP, 0, MAKELPARAM((rect.right - rect.left) / 2, (rect.bottom - rect.top) / 2));
int status; waitpid(pid, &status, 0);
}
int main(void) {
size_t count = 5;
while(count--) {read_target(); usleep(500000);}
return 0;
}
本帖最后由 人造人 于 2021-11-9 23:23 编辑
hrpzcf 发表于 2021-11-9 22:20
这得靠windows API去读取窗口中的文字了吧,但是不确定有没有这样的API。
有肯定是有这样的 api,但是我不知道会这么容易就找到这样的 api
人造人 发表于 2021-11-9 23:20
有肯定是有这样的 api,但是我不知道会这么容易就找到这样的 api
大佬,请问你一般都是上哪查win API 的,这个win API吗
页:
[1]
2