windowsAPI
活最好的自己
做一个快乐的learning coder!To be my best!
展开
-
2014_03_27工作日志:windows编程需要注意的一些内容。
1、#pragma comment(lib,"lib/libcurl.lib")这条语句中,1、文件夹用正斜杠表示。2、没有分号。2、显式运行dll时(也就是按以上语句),一定要先使用以上语句加载lib文件,然后把lib文件放入和工程在一起的文件夹下。同时要把它对应的dll文件放入程序执行的Debug文件夹下面。原创 2014-03-27 09:41:51 · 501 阅读 · 0 评论 -
简单的程序日志打印函数WriteLog,适用于vc等,含宽字符。
#include #include #include #include #pragma comment(lib,"Psapi.lib")char szLogPath[1000];char szCurrentDirectory[1000];bool WriteLog(char *pLog){ FILE *fScream = fopen(szLogPath,"a+"); i原创 2014-07-15 15:43:13 · 2626 阅读 · 0 评论 -
20140624:(是否存在某个文件夹操作)PE下粗略判断某个分区是否是Windows系统盘的代码
“PE下粗略判断某个分区是否是Windows系统盘”等价于“PE下某个分区否是Windows系统盘”原创 2014-06-24 21:17:07 · 709 阅读 · 0 评论 -
2014_03_30工作日志:error创建dll时,只生成了dll,却没有发现lib文件
错因:只记着写__declspec(dllexport) BOOL DLL_Test(IN LPTSTR lpFilePath,IN LPTSTR lpMd5Content);这个头文件Dll_Md5_Test.h,却忘记了在含有BOOL APIENTRY DllMain(HINSTANCE hInstance,DWORD fdwReason,PVOID pvReserved){原创 2014-03-30 19:10:25 · 616 阅读 · 0 评论 -
更改卷标名称
在百度中搜索“win32 卷标”,就能发现它原创 2014-07-17 13:23:25 · 1613 阅读 · 0 评论 -
2014-03-30工作日志:我对如何创建和调用dll的总结
1、新建Project->Win32Dynamic-Link Library。然后像以往一样编程。选择这样的工程和win32 console application工程的区别就是project->settings->link->project options->在category是general的条件下,将其中的subsystem:console改为dll,out:"Release/DLL原创 2014-03-30 22:08:29 · 594 阅读 · 0 评论 -
2014-06-06:CreateFile函数详解
参考http://blog.sina.com.cn/s/blog_6354bd9f0100ro8q.html转载 2014-06-06 10:43:47 · 445 阅读 · 0 评论 -
c++builder让MessageBox窗口置顶
MessageBox(NULL,szLog,"提示",MB_SYSTEMMODAL);原创 2014-07-17 13:25:21 · 2436 阅读 · 0 评论 -
执行函数execwait(NULL,lpCmd,120000)
bool execwait(char *cmdline,char *cmd,int timeout){ PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory( &pi, sizeof(pi) ); ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si);原创 2014-07-16 19:17:45 · 1796 阅读 · 0 评论 -
2014-06-06:GetCurrentDirectory函数
#include #include #include void main(){ TCHAR szSave[261]; GetCurrentDirectory(261,szSave); cout<<szSave<<endl;}原创 2014-06-06 10:08:03 · 606 阅读 · 0 评论 -
error:_tprintf(TEXT("OK"));居然能出错,太不可思议了
在预编译里面,必须要_UNICODE,UNICODE原创 2014-06-04 22:00:19 · 707 阅读 · 0 评论 -
2014-04-13第15周周日:goto语句的标志只包含一句话,而且程序总会执行goto的标志。
对于下面这段代码,int main(){ int i, j; for ( i = 0; i < 10; i++ ) { printf( "Outer loop executing. i = %d\n", i ); for ( j = 0; j < 3; j++ ) { printf( " Inner loop executing. j = %d\n", j );原创 2014-04-13 10:37:52 · 874 阅读 · 0 评论 -
2014-04-23:去掉路径最后的反斜杠
#include #include #include #include LPTSTR DeleteBlackslash(LPTSTR lpProfilePath){ DWORD dwPathLength = 0 ; dwPathLength = _tcslen(lpProfilePath) ; printf("length:%d",dwPathLength); i原创 2014-04-23 16:40:05 · 2551 阅读 · 0 评论 -
2014_04_22工作日志:memset(szMemSet,0,MAX_PATH+1);
void main(){ TCHAR szMemSet[MAX_PATH+1]; memset(szMemSet,0,MAX_PATH+1); printf("%d,%d\n",strlen(szMemSet),sizeof(szMemSet));}用mese原创 2014-04-22 14:37:01 · 780 阅读 · 0 评论 -
20140422工作日志:命令行单斜杠,命令行输出变量
1、对于命令行duiluji输入,一般不考虑转义,直接原创 2014-04-22 17:22:10 · 628 阅读 · 0 评论 -
2014-04-08工作日志:error C2061: syntax error : identifier 'LPPROFILEINFO'
出现以上问题,主要是由于在调用这个原创 2014-04-08 15:14:50 · 834 阅读 · 0 评论 -
2014-04-09工作日志:vc++6.0快捷键
1、安装VAssitX后原创 2014-04-09 15:31:35 · 506 阅读 · 0 评论 -
error LNK2001: unresolved external symbol _NetUserAdd@16.fatal error LNK1120: 1 unresolved externals
NetUserAdd原创 2014-04-09 20:09:22 · 912 阅读 · 0 评论 -
2014-04-23:error: lpSidString = GetUserSid(hToken);%s在UNICODE的情况很特殊
应改为 _tcscpy(lpSidString,GetUserSid(hToken));原创 2014-04-23 10:16:33 · 609 阅读 · 0 评论 -
2014-04-09工作日志:error:出现了一个问题,将导致程序停止工作。
对于这类问题,原创 2014-04-10 09:26:52 · 1328 阅读 · 0 评论 -
2014-04-25总结:注册表中磁盘号及名称,磁盘的分卷信息。
1、在公司,学到的东西很多,但真正能被我原创 2014-04-25 22:44:03 · 4343 阅读 · 0 评论 -
2014-06-06:IOCTL_STORAGE_GET_DEVICE_NUMBER获取磁盘信息如磁盘号、磁盘类型、分区号
#include #include #include #define DD_TM_DETECTDISKSUCCESS 0#define DD_TM_LACKPARAMETERERROR 1#define DD_TM_GETHANDLEFAILERROR 2#define DD_TM_GETDISKINFOFAILERROR 3int _tmain(int argc,TCHAR原创 2014-06-06 12:12:05 · 3595 阅读 · 0 评论 -
_beginthreadex与WaitForSingleObject
#include #include #include #include #include #include bool CheckLastRate(char *lpContent);unsigned int _stdcall Check_Thread(LPTSTR lpContent);int ProcessRate = 0;int main(){ FILE *原创 2014-07-03 16:01:36 · 1920 阅读 · 0 评论 -
error:CreateFile()函数使用了FILE_FLAG_NO_BUFFERING后就不能使用SetFilePointer了
转子csdn论坛:我要读取一个大文件,为了不影响性能,故CreateFile()函数包含了标志。HANDLE hFile=NULL;hFile=CreateFile(m_chFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMA转载 2014-07-07 13:10:50 · 3059 阅读 · 0 评论 -
windows编程:获取本地时间代码
#include #include void main(){ SYSTEMTIME timeLocal; GetLocalTime(&timeLocal); printf("%04u-%02u-%02u %02u:%02u:%02u",timeLocal.wYear,timeLocal.wMonth,timeLocal.wDay,timeLocal.wHour,timeLoca原创 2014-11-14 21:13:26 · 940 阅读 · 0 评论 -
error:使用GetActiveWindow时,句柄总是为0x0000,后来才发现是我错了
1、原创 2014-11-03 17:00:04 · 967 阅读 · 0 评论 -
GetForegroundWindow获取系统最前端的窗口
1、GetActiveWindow返回线程的活动窗口,而不是系统的活动窗口。如果要得到用户正在激活的窗口,应该使用 GetForegroundWindow。2、例如原创 2014-11-03 17:12:47 · 23405 阅读 · 0 评论 -
win32 获取当前焦点的几个函数
GetForegroundWindowGetActiveWindowGetFocus原创 2014-11-03 15:49:45 · 5362 阅读 · 0 评论 -
c/c++ error:GetAdaptersInfo调用失败后重复调用,导致内存溢出
1、一开始一看就知道是 内存泄露 的问题,但是没有猜到 ,这个内存泄露 不是我自己开辟的内存引起的,而是因为一个函数的 实参 传递错误 引起的。2、我将 最原始 正确的代码 ,一点点地添加我 当前的代码,没有发现任何问题。当我更新 嫌疑最大 的Get_My_IP_MAC函数时,就出现bug了。3、我对这个函数的 更新 主要出在 写程序日志 上,最后 仔细原创 2015-01-28 14:57:59 · 1811 阅读 · 0 评论 -
c/c++ error:GetAdaptersInfo第二个实参未被赋值,GetMac.exe 已停止工作
1、出现这个问题,很明显是是内存分配有问题。2、和 正确的代码 一对比,才发现是 以下这部分代码 出问题了 ULONG ulOutLen ; IP_ADAPTER_INFO *pIpAdapterInfo = ( IP_ADAPTER_INFO * )malloc( sizeof(IP_ADAPTER_INFO) ); if ( pIpAdapterInfo == N原创 2015-01-28 12:37:13 · 895 阅读 · 0 评论 -
windows API error:读取某个磁盘的剩余空间信息时,得不出正确的结果
1、使用GetDiskFreeSpace函数获取某个分区的容量信息时,总是获取到和实际结果不一致的信息。2、对照了以前正确的程序,才发现,要将GetDiskFreeSpace函数的那几个参数强制转换为DWORD64类型的,才可以相乘得到正确的结果。3、代码如下://获取每个volume的剩余空间BOOL GetVolumeSize( IN char cVolume ){ HANDLE原创 2015-02-10 15:09:24 · 1309 阅读 · 0 评论 -
防止程序被多次重复调用的代码
HANDLE hMutex; hMutex=CreateMutex( NULL,//no security attributes FALSE,//initially not owned "SiciMoboInitial");//命名Mutex是全局对象 //在所有的process都可以访问到 CreateMutex if(ERROR_ALREADY_EXISTS原创 2015-02-26 18:54:04 · 2609 阅读 · 0 评论 -
c++builder使用Windows系统提供的IP控件
本文是ccrun(老妖)根据偶然间看到的一篇文章略作修改而成。参考资料:标题:在Delphi中使用IP控件作者:西安交通大学9649# 刘明华在些对原作者的无私奉献表示感谢!如欲转载请保留完整版权信息。如果这篇文章侵犯了您的版权,请来信告诉我们:info@ccrun.comccrun(老妖)(www.ccrun.com) 2003.10.29在网络程序中,我们常常碰到转载 2014-11-12 10:45:39 · 1059 阅读 · 0 评论 -
error:使用rebuild编译链接dll文件和exe文件,结果改变产生dll的源文件的内容,输出结果都没有改变
1、我一开始以为是我的代码有问题,有待呢让原创 2014-09-15 14:14:46 · 634 阅读 · 0 评论 -
获取局域网内的smsblserver主机的IP地址代码
#include #include "EXE_DLL_NetHelp.h"#include #pragma comment(lib,"DLL_NetHelp.lib")void main(){ char pHostIp[260]; char pHostName[260] = "smsblserver"; if (!DLL_NH_GetHostIPFromNameA(pHost原创 2014-07-07 21:04:43 · 863 阅读 · 0 评论 -
以后再学的知识:
1、设备控制台 (DevCon.exe) 命令原创 2014-04-27 19:08:26 · 788 阅读 · 0 评论 -
GetFileAttributes可以用于文件夹的检测,如"c:\\1"即代表磁盘下的名称为"1"的文件夹。
#include #include void main(){ if (GetFileAttributes("c:\\1")!=INVALID_FILE_ATTRIBUTES) { cout<<"exist"<<endl; } else { cout<<"not exist"<<endl; }}原创 2014-07-14 13:42:10 · 946 阅读 · 0 评论 -
设置windows窗口置顶
::SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);原创 2014-08-20 11:28:57 · 6297 阅读 · 1 评论 -
代码规范
1、定义一个变量时,尽量给HKEY hKey =NULL;原创 2014-04-22 11:57:34 · 679 阅读 · 0 评论 -
移除程序的某些权限
#include #include #include #include bool execwait(char *cmdline,char *cmd,int timeout);BOOLSetNamePrivilege(HANDLE hProcess,BOOL bImpersonateEnable,BOOL bLoadDriverEnable){ PTOKEN_PRIVILEGE原创 2014-08-16 09:33:32 · 808 阅读 · 0 评论