开发者社区> berryz2007> 正文

一些技巧(1)

简介: 1.添加变量方法在需要添加变量的控件上右击鼠标,类别选择value,即可2.实现拖放使用函数//UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);//hDrop是指向拖动文件结构的句柄//iFile是以0开始的被拖动文件的序号,因为一次可能拖动多个文件。
+关注继续查看
1.添加变量方法
在需要添加变量的控件上右击鼠标,类别选择value,即可
2.实现拖放使用函数
//UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);
//hDrop是指向拖动文件结构的句柄
//iFile是以0开始的被拖动文件的序号,因为一次可能拖动多个文件。当此参数设置为0xFFFFFFFF,则函数返回拖动文件的数量
//lpszFile是指向文件名的缓冲区
//cch是文件名缓冲区的大小,即文件名的字节数
3.超时错误处理
FD_SET fd={1,m_hSocket};
TIMEVAL tv={nSecs,0};
if(Select(0,NULL,&fd,NULL,&tv)==0)
{
//超时错误处理
}
4.添加自定义的消息
//使用消息常量WM_USER加上一个正整数
#define WM_MYMESSAGE WM_USER+1
//在.cpp文件中消息映射的语句
BEGIN_MESSAGE_MAP(CMyWnd,CMyParentWndClass)
 ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
END_MESSAGE_MAP()
//然后在.h头文件中加入消息映射函数的原型声明如下
afx_msg LRESULT OnMyMessage(WPARAM,LPARAM);
=====================================================
        HC=::GetWindow(hCurWindow,GW_CHILD);//列表框
        EDIT_1=::GetWindow(HC,GW_HWNDNEXT);//编辑框
        EDIT_2=::GetNextWindow(EDIT_1,GW_HWNDNEXT);
        EDIT_3=::GetNextWindow(EDIT_2,GW_HWNDNEXT);//同胞窗口
        EDIT_4=::GetNextWindow(EDIT_3,GW_HWNDNEXT);//同胞窗口
        EDIT_5=::GetNextWindow(EDIT_4,GW_HWNDNEXT);//同胞窗口
============================
         CStdioFile f1;
         testrs rs1;
    CString filename, value1;
    filename = "E://tt.txt";
    rs1.Open(CRecordset::snapshot,"select * from table1");
       if(f1.Open(filename,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite))
    {
       while( !rs1.IsEOF() )
       {
           rs1.GetFieldValue("mobile",value1);
           f1.WriteString(value1+"/n");
           rs1.MoveNext();
       }
    }
    else MessageBox("File initializtion error","information",MB_OK);
    rs1.Close;
    f1.Close;
===================================================
使用内存文件
CMemFile MyFile;
MyFile.Open("/temp.txt",CFile::modeCreate|CFile::modeWrite);
MyFile.Attach(pAttach,dwFileLength);
===================================================
屏幕保护和能源保护功能的关闭与开启
1.关闭屏幕保护
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,0,SPIF_SENDWININICHANGE);
2.关闭能源保护
SystemParametersInfo(SPI_SETLOWPOWERACTIVE,FALSE,0,SPIF_SENDWININICHANGE);
SystemParametersInfo(SPI_SETPOWEROFFACTIVE,FALSE,0,SPIF_SENDWININICHANGE);
3.打开
将上面中的FALSE改为TRUE即可
===================================================
用默认程序打开mp3文件
ShellExecute(0,"open","a.mp3",NULL,NULL,0);
===================================================
关机 注销
BOOL ExitWindow***(
     UINT uFlags//关机方式
    ,DWORD dwReservde//保留(直接写0即可)
    };
参数uFlags指定关机方式
EWX_LOGOFF      //终止所有进程,然后注销
EWX_POWEROFF    //关闭系统切断电源。但调用该函数的进程必须要有SE_SHUTDOWN_NAME特权
EWX_REBOOT      //关闭系统并重新启动。必须有SE_SHUTDOWN_NAME特权
EWX_SHUTDOWN    //关闭系统到并提示用户可以安全关机,文件缓冲区内容保存到磁盘,所有进程终止。必须有SE_SHUTDOWN_NAME特权
EWX_FORCE       //强制进程终止,而且系统不会发WM——QUERYENDSESSION和WM_ENDSESSION消息,这种方式会使应用程序丢失数据,应慎重使用
参数dwReservde是保留字,可以随意设置成一个数,比如1
注:
1.Windows 2000下,必须调用AdjustTokenPrivileges函数来使用SE_SHUTDOWN_NAME特权。
2.GetTokenInformation()该函数能显示那些特权是可用的,大部分特权是禁止的
3.在进行特权操作前,必须在存权令牌内使能必要的特权。可先调用OpenThreadToken函数得到存取令牌句柄,然后调用AdjustTokenPrivileges函数来使用该特权。在进行响应的操作之后,再调用一次AdjustTokenPrivileges函数来禁止一个标志的特权。
4.为了获取对应某个字符串的当前LUID,要调用LookupPrivilegeValue函数,函数LookupPrivilegeName把一个LUID值转换为相应的字符串常量。
5.特权是以字符串形式定义在WinNt.h中。当需要显示某个用户的某个特权描述时,可以使用函数LookupPrivilegeDisplayName来获得描述字符串。
=====================================================
连接远程计算机的注册表
MachineName="////"+MachineName;
LPTSTR p=MachineName.GetBuffer(MachineName.GetLength());
LONG lRet=::RegConnectRegistry(p,HKEY_PERFORMANCE_DATA,&key);
==========================================================
让应用程序从IE中获取键入的网址 
HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
if(hwnd)
{
    HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("Edit"),NULL);
   char sz[255];
  ::SendMessage(hwnd2,WM_GETTEXT,255,(LPARAM)sz);
  AfxMessageBox(sz);
}
结果发现不能得到正确的结果,从SPY上看,类名也全部是正确的,为什么不能得到正确的结果呢?看了他的代码后,我进行了如下改动,就可以得到正确的结果了:
HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
 if(hwnd)
 {
  HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("WorkerW"),NULL);
  HWND hwnd3=::FindWindowEx(hwnd2,NULL,_T("ReBarWindow32"),NULL);
  HWND hwnd4=::FindWindowEx(hwnd3,NULL,_T("ComboBoxEx32"),NULL);
  HWND hwnd5=::FindWindowEx(hwnd4,NULL,_T("ComboBox"),NULL);
  HWND hwnd6=::FindWindowEx(hwnd5,NULL,_T("Edit"),NULL);
   char sz[255];
  ::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz);
  AfxMessageBox(sz);
 }
}
  以上的代码不用我解释了吧,这个问题不是什么大问题,难度也不大,但是可能会让初学者不明白为什么得不到程序某一控件的HANDLE,其实对VC来说,没有什么办不到的事情,只是需要你仔细的分析一下而已  
网络编程

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
18618 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
12392 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
8931 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
16959 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11691 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
17890 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24726 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19577 0
+关注
300
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载