• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 14, comments - 4, trackbacks - 0, articles - 0

            VISUAL C++軟件開發中幾個常用功能

            Posted on 2006-07-05 00:26 will 閱讀(466) 評論(0)  編輯 收藏 引用 所屬分類: 技術探索
            ?????????在進行軟件開發過程中間,有很多小功能的實現,雖然這些東西你可以不用,但是如果應用仂將會是你的程序更具有專業性。?
            一、設置程序自動運行。??
            ???????很多監控軟件要求軟件能夠在系統重新啟動后不用用戶去點擊圖標啟動項目,而是直接能夠啟動運行,方法是寫注冊表Software\\Microsoft\\Windows\\CurrentVersion\\Run。參考程序可以見下:(查找程序目錄的執行文件,存在則進行添加注冊表操作)?
            ???????? HKEY RegKey;?
            ???????? CString sPath;?
            ???????? GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);?
            ???????? sPath.ReleaseBuffer();?
            ???????? int nPos;?
            ??? nPos=sPath.ReverseFind(’\\’);?
            ??? sPath=sPath.Left(nPos);?
            ??? CString lpszFile=sPath+"\\****.exe";//這里加上你要查找的執行文件名稱?
            ??? CFileFind fFind;?
            ??? BOOL bSuccess;?
            ??? bSuccess=fFind.FindFile(lpszFile);?
            ??? fFind.Close();?
            ??? if(bSuccess)?
            ??? {?
            ??????? CString fullName;?
            ??????? fullName=lpszFile;?
            ??????? RegKey=NULL;?
            ??????? RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&RegKey);?
            ??????? RegSetValueEx(RegKey,"*****",0,REG_SZ,(const unsigned char*)(LPCTSTR)fullName,fullName.GetLength());//這里加上你需要在注冊表中注冊的內容?
            ??????? this->UpdateData(FALSE);?
            ??? }?
            ??? else?
            ??? {?
            ??????? theApp.SetMainSkin();?
            ??????? ::AfxMessageBox("沒找到執行程序,自動運行失敗");?
            ??????? exit(0);?
            ??? }?

            二、自動配置數據源?
            ??? 很多的程序都要用到數據庫結合的操作,這里舉例ACCESS,因為ACCESS在中小型VC系統開發中是最常用到的,如果程序的移植,如果對于很初級的用戶來說,你還需要他到配置面板中進行數據源配置的話,那就有點說不過去了。?
            ???????? #include <odbcinst.h>?
            ???????? //配置數據源,數據庫在應用程序目錄下,這里比如數據庫文件名為***.mdb,程序運行時候可以將數據庫文件拷貝到程序目錄下面。?
            ??? CString sPath;?
            ??? GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);?
            ??? sPath.ReleaseBuffer();?
            ??? int nPos;?
            ??? nPos=sPath.ReverseFind(’\\’);?
            ??? sPath=sPath.Left(nPos);?
            ??? CString lpszFileName = sPath + "\\***.mdb";//這里修改成你的數據庫文件名稱?
            ??? CFileFind? fFind;?
            ??? if(!fFind.FindFile(lpszFileName))?
            ??? {?
            ??????? ::AfxMessageBox("沒有找到數據庫");?
            ??????? exit(0);?
            ??? }??
            ??? CString szDesc;?
            ??? szDesc.Format( "DSN=****;Description=****;DESCRIPTION=The DataBase For ***;FIL=MicrosoftAccess;DEFAULTDIR=%s;DBQ=%s;" ,sPath,lpszFileName);//這里***號可以添加成你的描述?

            ??? //添加數據源?
            ??? if(!::SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",(LPCSTR)szDesc))?
            ??? {?
            ??????? ::AfxMessageBox("32位ODBC數據源配置錯誤!");?
            ??????? exit(0);?
            ??? }?

            三、設置顯示模式:?
            ??? 很多的程序的移植的運行環境是改變的。有可能你的原來開發環境是1024X768,但是到了那些顯示器大于17的時候(分辨率超過你的開發時的分辨率時),程序的顯示可能就不好看了。?
            ???????? DEVMODE lpDevMode;?
            ??? lpDevMode.dmPelsHeight=768;//Y方向象素點?
            ??? lpDevMode.dmPelsWidth=1024;//X方向象素點?
            ??? lpDevMode.dmDisplayFrequency=85;//屏幕刷新率?
            ??? lpDevMode.dmFields=DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY;?
            ??? ChangeDisplaySettings(&lpDevMode,0);?

            四、在你的程序中間加載其他應用程序:?
            ??? 你的程序除了調用到各個模塊進行協同工作外(DLL),還有可能調用不是同一個開發環境下的應用程序,比如VC環境下調用DELPHI,VB開發的執行程序,你就可以用到下面的方法(將調用的應用程序拷貝程序目錄中):?
            ???????? CString sPath;?
            ??? GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);?
            ??? sPath.ReleaseBuffer();?
            ??? int nPos;?
            ??? nPos=sPath.ReverseFind(’\\’);?
            ??? sPath=sPath.Left(nPos);?
            ??? CString lpszFileName = sPath + "\\***.exe";//這里修改成你的調用應用程序的文件名稱?
            ??? CFileFind? fFind;?
            ??? if(!fFind.FindFile(lpszFileName))?
            ??? {?
            ??????? ::AfxMessageBox("沒有找到調用的應用程序!");??
            ??????? return FALSE;?
            ??? }?
            ??? else?
            ??????? ShellExecute(NULL,NULL,_T("***.exe"),NULL,sPath,NULL);??

            五、結束進程:?
            ??? 在你的程序中結束別的程序進程,采用的方法是進行進程列舉,然后采用查找的方法進行:?
            ???????? #include "TLHELP32.H"?
            ???????? DWORD ProcessID[50];?
            ??? CString kkk[50];?
            ??? HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);??
            ??? PROCESSENTRY32* info=new PROCESSENTRY32;?
            ??? PROCESSENTRY32 ProcessInfo;//聲明進程信息變量?
            ??? ProcessInfo.dwSize=sizeof(ProcessInfo);//設置ProcessInfo的大小?
            ??? //返回系統中第一個進程的信息?
            ??? BOOL Status=Process32First(SnapShot,&ProcessInfo);?
            ??? int m_nProcess=0;??
            ??? while(Status)?
            ??? {?
            ??????? CString s,str1,str2;?
            ??????? s.Format("%d",ProcessInfo.cntThreads);?
            ??????? str1.Format("%s",ProcessInfo.szExeFile);?
            ??????? str1=ProcessInfo.szExeFile;?
            ??????? kkk[m_nProcess]=ProcessInfo.szExeFile;??
            ??????? ProcessID[m_nProcess]=ProcessInfo.th32ProcessID;??
            ??????? if(str1=="***.exe")//***.exe就是你要結束的進程的名稱?
            ??????? {?
            ??????????? HANDLE ProcessHandle;?
            ??????????? ProcessHandle=OpenProcess (PROCESS_ALL_ACCESS,FALSE,ProcessID[m_nProcess]);?
            ??????????? TerminateProcess(ProcessHandle,0);?????
            ??????? }?
            ??????? Status=Process32Next(SnapShot,&ProcessInfo);?
            ??????? m_nProcess++;?
            ??? }?

            国内高清久久久久久| 久久久久国产精品人妻| 一本色道久久88精品综合| 久久丫精品国产亚洲av不卡| 久久久久国产精品| 无码国内精品久久人妻麻豆按摩| 精品综合久久久久久98| 青青草国产精品久久久久| 狠狠色丁香久久婷婷综合蜜芽五月| 91精品国产综合久久婷婷| 欧洲性大片xxxxx久久久| 久久亚洲AV成人无码国产| 久久精品综合一区二区三区| 亚洲国产精品无码久久| 久久精品国产72国产精福利| 无码专区久久综合久中文字幕| 九九久久精品国产| 国产精品女同久久久久电影院| 欧美激情精品久久久久久| 精品国产乱码久久久久久郑州公司| 欧美粉嫩小泬久久久久久久 | 国内精品久久久久| 亚洲а∨天堂久久精品9966| 99国产精品久久久久久久成人热| 色天使久久综合网天天| 一本久久久久久久| 久久天天躁狠狠躁夜夜网站| 亚洲国产成人精品91久久久| 久久免费香蕉视频| 久久精品视频网| 色诱久久久久综合网ywww| 色偷偷91久久综合噜噜噜噜| 99精品久久久久久久婷婷| 久久AV高清无码| 97精品伊人久久大香线蕉app| 深夜久久AAAAA级毛片免费看| 青青热久久综合网伊人| 国产精品一区二区久久不卡| 蜜桃麻豆WWW久久囤产精品| 手机看片久久高清国产日韩| 久久精品一区二区三区AV|