軟體開發中幾個常用功能的實現

來源:互聯網
上載者:User
在進行軟體開發過程中間,有很多小功能的實現,雖然這些東西你可以不用,但是如果應用仂將會是你的程式更具有專業性。
一、設定程式自動運行。
    很多監視軟體要求軟體能夠在系統重新啟動後不用使用者去點擊表徵圖啟動項目,而是直接能夠啟動運行,方法是寫註冊表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++;
    }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.