單文件程式使用命令列引數方式開啟

2021-04-20 08:24:19 字數 792 閱讀 7152

由於使用者要求,博主需要實現交付給使用者的兩個應用程式只需要進行一次登入即可。有些類似於web下的單點登入。

這個問題,乙個解決辦法就是使用每個應用程式增加啟動另乙個應用程式的介面,使用命令列的方式啟動,將當前應用程式登入使用者的帳號作為命令列引數,另乙個系統根據命令列引數判斷是否需要顯示登入介面即可。

if (!processshellcommand(cmdinfo))

return false;

在這之後的訊息沒有彈出。

此時估計問題出在cmdinfo的資料成員中。因為jzh_yy是我傳入的命令列引數,肯定被cmdinfo中的某個成員記錄了下來。再次使用messagebox**,終於發現,cmdinfo.m_strfilename = jzh_yy。這個變數應該代表開啟的檔名,而開啟時根本就沒有這個檔案而崩潰(暈的是,mfc為啥要崩潰呢?如果發現指定的檔案無法開啟,完全可以開啟乙個空文件嘛)。

到這一步,光該m_strfilename的值顯然不是解決問題之道,大家也許都知道,cmdinfo中有個成員變數,叫做m_nshellcommand,是個列舉型別,定義如下

此時除錯得出,該變數的值為1,也就是fileopen。至此已經明白問題的原因了。當使用命令列引數方式執行應用程式時,系統預設該引數是需要開啟的文件檔案(如果引數中指定了路徑,則直接開啟該檔案;否則預設為開啟當前目錄下的檔案),由於找不到檔案而啟動失敗。

將m_nshellcomand 修改為  cmdinfo.m_nshellcommand = ccommandlineinfo::filenew;

一切都ok了。

特將此過程記錄下來,以供他人參考。

引用命令列引數

winmain 的第3個引數是lpcmdline,這是乙個字串,可以直接用messagebox把內容顯示出來。我是在code blocks中除錯這個程式的。程式編好後如果直接執行,看不到任何內容,此時lpcmdline是空串。要想在lpcmdline中裝載有效內容,需要事先設定code blocks...

使用命令列方式編譯wxWidgets

d wxwidgets 2.8.8 build msw找到 config.vc,並以記事本方式開啟,進行一些修改 unicode 0改為1 使用unicode monolithic 0改為1 把所有的庫都編在乙個檔案中。use opengl 1 自帶opengl支援 use odbc 1 自帶odb...

Discourse 如何使用命令列方式進行恢復

本文主要用於說明如何從命令列工具的方式中恢復 discourse,以及我們在備份和恢復的過程中遇到的坑和解決辦法。恢復前需要的準備工作 因為 discourse 必須使用網域名稱公共網路訪問才能完整安裝。如果你的站點比較大的話,你需要考慮這個問題。你需要考慮修改 dns 的配置,讓你的 discou...