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上看,類名也全部是正确的,為什麼不能得到正确的結果呢?看了他的代碼後,我進行了如下改動,就可以得到正确的結果了:
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);
::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz);
}
以上的代碼不用我解釋了吧,這個問題不是什麼大問題,難度也不大,但是可能會讓初學者不明白為什麼得不到程式某一控件的HANDLE,其實對VC來說,沒有什麼辦不到的事情,隻是需要你仔細的分析一下而已
網絡程式設計