现在位置: 首页 > 自动控制 > 文章
2012-08-16 06:30 工业·编程 ⁄ 共 4797字 评论 1 条
    不知不觉做软件已经做了两年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差得太远。通过这几年的软件开发,积累了一些经验而已,先谈谈自己的经验,其实我的经验也不足,只能算是这几年来在编程方面的一些看法吧。    一、什么叫编程     有人说:“编程讲究是一个整体的平衡性”。“平衡性”是软件的很重要的部分,从平衡性的角度去...
阅读全文
2012-08-15 23:48 工业·编程 ⁄ 共 2462字 暂无评论
wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数: 一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。 到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam和lParam的大小完全相同。 在Win32API的早期,为了保证和Win16API的代码可移植性MS定义了WPARAM和LPARAM两个宏。 ...
阅读全文
2012-08-15 23:46 工业·编程 ⁄ 共 424字 暂无评论
CString strPath = L"HARDWARE//DESCRIPTION//System//CentralProcessor//0";  //注册表子键路径 CRegKey regkey;  //定义注册表类对象 LONG lResult;    //LONG型变量-反应结果 lResult=regkey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS); //打开注册表键 if (lResult!=ERROR_SUCCESS) {   AfxMessageBox(L"错误:无法查询有关的注册表...
阅读全文
CString strPath="HARDWARE//DESCRIPTION//System"; CRegKey regkey;//定义注册表类对象 LONG lResult;//LONG型变量-反应结果 //打开注册表键 lResult=regkey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS); if (lResult!=ERROR_SUCCESS) { AfxMessageBox("错误:无法查询有关的注册表信息"); return; } char chVideoBiosDate[50]; DWORD dwSize=50; regkey.QueryValue((char*)chVid...
阅读全文
2012-08-15 23:44 工业·编程 ⁄ 共 688字 暂无评论
OSVERSIONINFO OSVersionInfo; OSVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OSVersionInfo);  if (OSVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT    && OSVersionInfo.dwMajorVersion == 5    && OSVersionInfo.dwMinorVersion == 0) {   //AfxMessageBox("Windows 2000 OS!");   cout << &...
阅读全文
2012-08-15 23:43 工业·编程 ⁄ 共 448字 暂无评论
CString strPath="HARDWARE//DESCRIPTION//System//CentralProcessor//0";//注册表子键路径 CRegKey regkey;//定义注册表类对象 LONG lResult;//LONG型变量-反应结果 lResult=regkey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS); //打开注册表键 if (lResult!=ERROR_SUCCESS) {    AfxMessageBox("错误:无法查询有关的注册表信息");    return;...
阅读全文
2012-08-15 23:42 工业·编程 ⁄ 共 1435字 暂无评论
    列表控制有一个特殊的功能,当以详细资料方式显示时,列表顶部的表头可以当作按钮来使用,这可以通过列表控制创建时的风格来控制。当鼠标点击列表头名称时,列表控制就会向其父窗口发送一个LNV_COLUMNCLICK消息,利用类导向中列表控制IDC_LISTCTRL对应的LNV_COLUMNCLICK消息加入相应处理函数,就可将表列按照特定顺序进行排列。其函数使用方法见程序,其中iSort为排序的表列索引号,(PFNLVCOMPARE)CompareFu...
阅读全文
2012-08-15 23:41 工业·编程 ⁄ 共 5979字 暂无评论
以下代码实现获取某个进程所属的用户名,比如RavMonD.exe的进程PID是1300,那么修改这条语句就OK GetProcessUser(1300,&bs);它的获取结果是:SYSTEM。 ----------------------------------------------------- #include <windows.h> #include <iostream.h> #include <COMDEF.H> #include <stdio.h> typedef struct _UNICODE_STRING {       ...
阅读全文
2012-08-15 23:40 工业·编程 ⁄ 共 509字 暂无评论
HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tp; BOOL EnableDebugPrivilages() { if (!::OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {   return FALSE; } if (!::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue )) {   ::CloseHandle( hToken );   return FALSE; } tp.Privil...
阅读全文
    在Windows 2000以上的MS操作系统,通过Windows的任务管理器可以列出当前系统的所有活动进程(如图1所示),在Windows XP中,更是在控制台下增加了一条Tasklist命令,让系统下的所有进程无所遁行(如图2所示)。这一切是怎么实现的呢?     引用侯捷大师在《深入浅出MFC》的一句话,“知其然而不知其所以然,真不是个好办法”。既然如此,我们干脆自己动手,自己通过编程来实现吧,这样很有成就...
阅读全文