我们有一个用C语言编写的旧的Windows 32位应用程序可以执行一些操作,并将结果显示为类似于文本框的内容. 我被要求在C#中编写一个应用程序,它从旧应用程序中读取数据,然后进一步处理数据. 问题是如何阅读旧应用程序中的文本框? 有人告诉我,我可以使用Windows API获取应用程序的“句柄”并逐步执行控件,然后读取每个数据!这是真的,如果是这样,我将如何从C#中做到这一点? 这是一个.Net 4 Windows窗体应用程序. 非常感谢解决方法:您...
Windows API笔记(一)内核对象 Windows API笔记(二)进程和进程间通信、进程边界 Windows API笔记(三)线程和线程同步、线程局部存储 Windows API笔记(三)线程同步 Windows API笔记(四)win32内存结构 Windows API笔记(五)虚拟内存 Windows API笔记(六)内存映射文件 Windows API笔记(七)堆 Windows API笔记(八)文件系统 Windows API笔记(九)窗口消息 Windows API笔记(十)动态链接库 Windows API笔记(十一)设备...
Windows API笔记(一)内核对象 Windows API笔记(二)进程和进程间通信、进程边界 Windows API笔记(三)线程和线程同步、线程局部存储 Windows API笔记(四)win32内存结构 Windows API笔记(五)虚拟内存 Windows API笔记(六)内存映射文件 Windows API笔记(七)堆 Windows API笔记(八)文件系统 Windows API笔记(九)窗口消息 Windows API笔记(十)动态链接库 Windows API笔记(十一)设备I/O文章目录1. 打开和关闭设备1....
效果图源代码下载地址: http://download.csdn.net/detail/dhfekl/7522141
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net一个窗口要显示,先要把它创建出来。那就需要调用API函数CreateWindow了,所以在注册窗口后的第二步,就需要调用创建窗口函数。 ? 函数声明如下: WINUSERAPI HWND WINAPI CreateWindowExA( ??? __in DWORD dwExStyle, ??? __in_opt LPCSTR lpClassName, ??? __in_opt LPCSTR lpWin...
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net在开发软件的过程里,经常要做的工作就是调试程序,许多问题的出现,不但是逻辑的问题,还有可能是对API的不熟悉,或者某种条件下调用API会出错的。那么这些出错的原因是什么呢?通常只获取到错误码,也就是通过函数GetLastError得到。当然可以根据这个错误码去查找MSDN就可以知道出...
GBK转UTF-8示例 GbkToUtf8.cpp#include <Windows.h> #include <iostream> #include <string> #include <fstream> int main() {using namespace std;string multiByteString = "我25岁。\nIm 25 years old.";int bufferSize = MultiByteToWideChar(CP_ACP, 0, multiByteString.c_str(), -1, nullptr, 0);WCHAR *unicodeString = new WCHAR[bufferSize];MultiByteToWideChar(CP_ACP, 0, multiByteString.c_str(), -1, unicodeString,...
上面已经介绍怎么样创建一个简单的线程,在那里就需要使用函数WaitForSingleObject,它是用来做什么的呢?其实它是用来实现等待线程结束的,它的机理是这样的,通知Windows操作系统,现在我进入睡眼状态,当我关注的对象条件是否满足,如果满足了就吵醒我。在那里关注的对象是线程是否退出,这是一个条件测试。如果不等待线程关闭,就去删除线程的资源,就会出错的。使用前面的线程是简单一些,但它不合适复用,现在就使用C++的类...
? 当你开发的软件在用户那里运行出错了,想怎么办呢?当然是希望把出错时候的运行环境信息生成报表,然后再Email回来查看了。这里就介绍一个函数可以把当时运行环境的进程全部找到,然后可以输出每个进程的信息。当然,这个函数也可以使用到杀病毒软件里,用来查看可疑的进程信息。 ? 函数EnumProcesses声明如下: ? BOOL WINAPI EnumProcesses ( ??? DWORD * lpidProcess, ??? DWORD?? cb, ??? DWORD * cbNeeded ??? ); lpidProce...
ShowWindow的API函数是显示窗口,但它在第一次调用和以后的调用是有区别的。第一次调用时,它的输入参数nCmdShow是需要输入WinMain函数里传入来的nCmdShow参数,而不能是其它参数。 ? 函数声明如下: WINUSERAPI BOOL WINAPI ShowWindow( ??? __in HWND hWnd, ??? __in int nCmdShow); hWnd是窗口的句柄。 nCmdShow是窗口显示的状态。可能设置的值如下: SW_FORCEMINIMIZE是强制窗口最小化,主要使用在非窗口主线程的其它线程来操作...
多个软件之间进行数据共享是非常重要的,难以想像编辑软件没有CTRL+C,CTRL+V的功能,是多么的不方便。很多的操作,就是拷贝的动作,就是为了数据共享。剪贴板共享是Windows里比较重要的功能,比如很多采集数据的软件为了方便导数据到Excel里面,就可以使用剪贴板的功能。还有即见即所得的界面导到Word里面,也可以使用剪贴板的功能。 ? 函数OpenClipboard声明如下: ? WINUSERAPI BOOL WINAPI OpenClipboard( ??? __in_opt HWND h...
有一次,我正在开发一个视频压缩程序,而压缩算法是需要非常高效的,也就是需要使用到CPU的多媒体指令。在X86的领域里,目前主要有两家CPU,就是INTEL和AMD。它们的多媒体指令是不一样的。为了区分这种不同的指令,就需要调用函数GetSystemInfo来获取CPU的信息,然后再调用不同的动态连接库来进行多媒体数据压缩。 ? 函数GetSystemInfo声明如下: ? WINBASEAPI VOID WINAPI GetSystemInfo( ??? __out LPSYSTEM_INFO lpSystemInfo ?...
多个线程操作相同的数据时,一般是需要按顺序访问的,否则会引导数据错乱,无法控制数据,变成随机变量。为解决这个问题,就需要引入互斥变量,让每个线程都按顺序地访问变量。这样就需要使用EnterCriticalSection和LeaveCriticalSection函数。 ? 函数EnterCriticalSection和LeaveCriticalSection声明如下: ? WINBASEAPI VOID WINAPI EnterCriticalSection( ??? __inout LPCRITICAL_SECTION lpCriticalSection ??? ); ??? WINBAS...
对话框是比较常用的窗口,比如当你想让用户输入一些参数时就可以使用对话框。或者提示一些警告的信息,都是可以使用对话框的。比如当你拷贝文件时,Windows就会提示一个拷贝文件的进度对话框。对话框的使用范围比较广,并且它在设计时就可以看到运行的结果模样,这样方便设计。但对话框又分为两类,一种对话框运行后,一定要用户关闭那个对话框后才能返回到父窗口;一种对话框是不需要关闭后就可以直接返回父窗口。因此,软件开发人...
从上面这段程序就可以看到,_tWinMain是应用程序的入口函数,这里是使用它的宏,定义在tchar.h头文件里,为什么要这样作宏定义的呢?由于Windows的应用程序要适应UNICODE和以前单字符的应用程序,由于Windows这两个API的定义是不一样的,如下: UNICODE的定义: ?#define _tWinMain?? wWinMain 单字符的定义: ?#define _tWinMain?? WinMain 只要经过这样的宏定义后,就可以适应不同字符宽度的函数接口了。由于我是采用UNICODE编译...