當前位置:首頁 » 文件傳輸 » 程序運行怎麼訪問實例
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

程序運行怎麼訪問實例

發布時間: 2022-09-06 00:47:57

1. 如何用eclipse運行別人的java實例

首先在eclipse中建立一個java project,然後在你建的這個project上右鍵建個package,然後在這個package上右鍵建個類,注意類名和你要運行的書上的代碼的類名一直(或者自己隨便定義一個類名然後把書上的代碼粘過來,然後根據錯誤提示更改類名)。再沒有錯誤提示之後右鍵選擇run as就可以看到輸出了

2. 如何用jhdl.jar運行實常式序

首先需要先載入JVM,然後根據jar中的函數簽名尋找到相應的函數,然後運行相應的函數
一段樣例代碼如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166

#include <iostream>
#include <jni.h>
#include <windows.h>
#include <cstring>
#include <direct.h>
using namespace std;
#define DIRLEN 10000

char* GetJrepath(int BIT);
int CallJAR(int BIT,char*buf,char*classPath,char*functionName);
int main(int argc, char *argv[])
{
char * buff = new char[DIRLEN];
getcwd(buff,DIRLEN);
strcat(buff,"\\lib\\support.jar");
if (argc<3)
{
cout<<"輸入參數錯誤";
return 0;
}
int BIT = 32;
if(!strcmp(argv[2],"64"))
BIT = 64 ;
//-30 沒有安裝jre環境 -31 創建jvm失敗 -32 缺少相關的庫
if (!strcmp(argv[1],"0"))
{
//-20 配置文件錯誤 -21 JSON異常
return CallJAR(BIT,buff,"com/run/Author","StartAuthor");
}
else if(!strcmp(argv[1],"1"))
{
return CallJAR(BIT,buff,"com/run/UpdateStatus","UpdateStatus1");
}
else if(!strcmp(argv[1],"2"))
{
return CallJAR(BIT,buff,"com/run/SendMsg_webchinese","SendSMS");
}
else
{
return CallJAR(BIT,buff,"com/run/UpdateStatus","UpdateANDSMS");
}

}
char* GetJrepath(int BIT)
{
#define MYBUFF 123
HKEY hKey;
long lRet;
char* dir = new char[MYBUFF];
DWORD dwBufLen = MYBUFF;
char* s = new char[MYBUFF];
if(BIT == 64)
strcpy(s,"SOFTWARE\\Wow6432Node\\JavaSoft\\Java Runtime Environment\\");
else
strcpy(s,"SOFTWARE\\JavaSoft\\Java Runtime Environment\\");
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT((TCHAR*)s),
0,
KEY_QUERY_VALUE,
&hKey);
if(lRet!=ERROR_SUCCESS)
return NULL;
lRet = RegQueryValueEx(hKey,
TEXT((TCHAR*)"CurrentVersion"),
NULL,
NULL,
(LPBYTE)dir,
&dwBufLen);
RegCloseKey(hKey);
if(lRet!=ERROR_SUCCESS)
return NULL;
strcat(s,dir);

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT((TCHAR*)s),
0,
KEY_QUERY_VALUE,
&hKey);
if(lRet!=ERROR_SUCCESS)
return NULL;
dwBufLen = MYBUFF;
lRet = RegQueryValueEx(hKey,
TEXT((TCHAR*)"RuntimeLib"),
NULL,
NULL,
(LPBYTE)dir,
&dwBufLen);
RegCloseKey(hKey);
if(lRet!=ERROR_SUCCESS)
return NULL;
return dir;
}
int CallJAR(int BIT,char*buf,char*classPath,char*functionName)
{
typedef jint (WINAPI *PFunCreateJavaVM)(JavaVM **, void **, void *);

int res;
JavaVMInitArgs vm_args;
JavaVMOption options[3];
JavaVM *jvm;
JNIEnv *env;
int len =strlen("-Djava.class.path=.;")+strlen(buf)+20;
char* temp = new char[len];
strcpy(temp,"-Djava.class.path=.;");
strcat(temp,buf);
/*設置初始化參數*/
//disable JIT,這是JNI文檔中的解釋,具體意義不是很清楚 ,能取哪些值也不清楚。
//從JNI文檔里給的示例代碼中搬過來的
options[0].optionString = "-Djava.compiler=NONE";
//設置classpath,如果程序用到了第三方的JAR包,也可以在這裡麵包含進來
options[1].optionString = temp;
//設置顯示消息的類型,取值有gc、class和jni,如果一次取多個的話值之間用逗號格開,如-verbose:gc,class
//該參數可以用來觀察C++調用JAVA的過程,設置該參數後,程序會在標准輸出設備上列印調用的相關信息
options[2].optionString = "-verbose:NONE";

//設置版本號,版本號有JNI_VERSION_1_1,JNI_VERSION_1_2和JNI_VERSION_1_4
//選擇一個根你安裝的JRE版本最近的版本號即可,不過你的JRE版本一定要等於或者高於指定的版本號
vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = 3;
vm_args.options = options;
//該參數指定是否忽略非標準的參數,如果填JNI_FLASE,當遇到非標准參數時,JNI_CreateJavaVM會返回JNI_ERR
vm_args.ignoreUnrecognized = JNI_TRUE;
//載入JVM.DLL動態庫
HINSTANCE hInstance = ::LoadLibrary(GetJrepath(BIT));
if (hInstance == NULL)
{
return -30;
}
//取得裡面的JNI_CreateJavaVM函數指針
PFunCreateJavaVM funCreateJavaVM = (PFunCreateJavaVM)::GetProcAddress(hInstance, "JNI_CreateJavaVM");
//調用JNI_CreateJavaVM創建虛擬機
res = (*funCreateJavaVM)(&jvm, (void**)&env, &vm_args);
if (res < 0)
{
return -31;
}
//查找test.Demo類,返回JAVA類的CLASS對象
jclass cls = env->FindClass(classPath);
//根據類的CLASS對象獲取該類的實例
if (cls==0)
{
printf("FindClass failed\n");
(jvm)->DestroyJavaVM();
return -32;
}
jobject obj = env->AllocObject(cls);

//獲取類中的方法,最後一個參數是方法的簽名,通過javap -s -p -classpath 路徑 文件名
jmethodID mid = env->GetMethodID(cls, functionName,"()I");
if (mid==0)
{
printf("getMethodID failed\n");
(jvm)->DestroyJavaVM();
return -32;
}
//構造參數並調用對象的方法

jstring msg = (jstring) env->CallObjectMethod(obj, mid);

//銷毀虛擬機並釋放動態庫
jvm->DestroyJavaVM();
::FreeLibrary(hInstance);
return (int)msg;
}

3. 如何獲取應用程序的實例句柄

1. ? 應用程序的 實例句柄保存在CWinAppIm_hInstance 中,可以這么調用 AfxGetInstancdHandle 獲得句柄. Example: HANDLE hInstance=AfxGetInstanceHandle(); 2. 如何通過代碼獲得應用程序主窗口的指針? 主窗口的 指針保存在CWinThread::m_pMainWnd 中,調用 AfxGetMainWnd 實現。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //使程序最大化. 3. 如何在程序中獲得其他程序的 圖標? 兩種方法: (1) SDK 函數 SHGetFileInfo 或使用 ExtractIcon 獲得圖標資源的 handle, (2) SDK 函數 SHGetFileInfo 獲得有關文件的 很多信息,如大小圖標,屬性,類型等. Example(1): 在程序窗口左上角顯示 NotePad 圖標. void CSampleView: OnDraw(CDC * pDC) { if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0, &stFileInfo,sizeof(stFileInfo),SHGFI_ICON)) { pDC ->DrawIcon(10,10,stFileInfo.hIcon); } } Example(2): 同樣功能,Use ExtractIcon Function void CSampleView:: OnDraw(CDC *pDC) { HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T ("NotePad.exe"),0); if (hIcon &&hIcon!=(HICON)-1) pDC->DrawIcon(10,10,hIcon); } 說明: 獲得notepad.exe 的路徑正規上來說用GetWindowsDirectory 函數得到,如果是 調用 win95 下的畫筆,應該用訪問注冊表的方法獲得其路徑,要作成一個比較考究的程 序,考慮應該全面點. 4. 如何編程結束應用程序?如何編程式控制制windows 的重新引導? 這是個很簡單又是編程中經常要遇到的問題. 第一問,向窗口發送 WM_CLOSE 消息,調用 CWnd::OnClose 成員函數.允許對用戶提示 是否保存修改過的數據. Example: AfxGetMainWindow()->SendMessage(WM_CLOSE); 還可以創建一個自定義的函數 Terminate Window void Terminate Window(LPCSTR pCaption) { CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption); if (pWnd) pWnd ->SendMessage(WM_CLOSE); } 說明: FindWindow 函數不是提倡的做法,因為它無法處理標題欄自動改變,比如我們要 檢測 Notepad 是不是已運行而事先不知道Notepad 的標題欄,這時 FindWindow 就無能 為力了,可以通過枚舉 windows 任務列表的辦法來實現。 在 機械出版社"Windows 95 API 開發人員指南"一書有比較詳細的介紹,這里就不再多說樂。 第二問,Use ExitWindowsEx Function 函數控制系統是重新引導,還是重啟 windows. 前面已經有人講過樂,就不再提了。 5. 怎樣加栽其他的應用程序? 我記得這好象是出場頻度很高的問題。 三個SDK 函數 winexec, shellexecute,createprocess 可以使用。 WinExec 最簡單,兩個參數,前一個指定路徑,後一個指定顯示方式.後一個參數值得說 一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一個無最大化按鈕的 程序,呵呵就是 Neterm,calc 等等,就不會出現正常的 窗體,但是已經被加到任務列表裡了。 ShellExecute 較 WinExex 靈活一點,可以指定工作目錄,下面的 Example 就是直接打開 c:\temp\1.txt,而不用加栽與 txt 文件關聯的應用程序,很多安裝程序完成後都會打開 一個窗口,來顯示Readme or Faq,偶猜就是這么作的啦. ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED); CreateProcess 最復雜,一共有十個參數,不過大部分都可以用NULL 代替,它可以指定 進程的安全屬性,繼承信息,類的優先順序等等.來看個很簡單的 Example: STARTUPINFO stinfo; //啟動窗口的信息 PROCESSINFO procinfo; //進程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo); 6. 確定應用程序的 路徑 前些天好象有人問過這個問題. Use GetMoleFileName 獲得應用程序的路徑,然後去掉可執行文件名。 Example: TCHAR exeFullPath[MAX_PATH]; // MAX_PATH 在API 中定義了吧,好象是128 GetMoleFileName(NULL,exeFullPath,MAX_PATH) 7. 獲得各種目錄信息 Windows 目錄: Use "GetWindowsDirectory「 Windows 下的system目錄: Use "GetSystemDirectory" temp 目錄: Use "GetTempPath " 當前目錄: Use "GetCurrentDirectory" 請注意前兩個函數的第一個參數為 目錄變數名,後一個為緩沖區; 後兩個相反. 8. 如何自定義消息 也有人問過的,其實不難。 (1) 手工定義消息,可以這么寫 #define WM_MY_MESSAGE(WM_USER+100), MS 推薦的至 少是 WM_USER+100; (2)寫消息處理函數,用 WPARAM,LPARAM返回LRESULT. LRESULT CMainFrame::OnMyMessage(WPARAM wparam,LPARAM lParam) { //加入你的處理函數 } (3) 在類的 AFX_MSG處進行聲明,也就是常說的"宏映射" 9. 如何改變窗口的圖標? 向窗口發送 WM_SECTION 消息。 Example: HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON); ASSERT(hIcon); AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM) hIcon); 10. 如何改變窗口的預設風格? 重栽 CWnd:: PreCreateWindow 並修改CREATESTRUCT 結構來指定窗口風格和其他創建 信息. Example: Delete "Max" Button and Set Original Window's Position and Size BOOL CMainFrame:: PreCreateWindow (CREATESTRUCT &cs) { cs.style &=~WS_MAXINIZEMOX; cs.x=cs.y=0; cs.cx=GetSystemMetrics(SM_CXSCREEN/2); cs.cy=GetSystemMetrics(SM_CYSCREEN/2); return CMDIFramewnd ::PreCreateWindow(cs); } 11. 如何將窗口居中顯示? Easy, Call Function CWnd:: Center Windows Example(1): Center Window( ); //Relative to it's parent // Relative to Screen Example(2): Center Window(CWnd:: GetDesktopWindow( )); //Relative to Application's MainWindow AfxGetMainWnd( ) -> Center Window( ); 12. 如何讓窗口和 MDI 窗口一啟動就最大化和最小化? 先說窗口。 在 InitStance 函數中設定 m_nCmdShow的 取值. m_nCmdShow=SW_SHOWMAXMIZED ; //最大化 m_nCmdShow=SW_SHOWMINMIZED ; //最小化 m_nCmdShow=SW_SHOWNORMAL ; //正常方式 MDI 窗口: 如果是創建新的應用程序,可以用 MFC AppWizard 的Advanced 按鈕並在MDI 子窗口風 格組中檢測最大化或最小化; 還可以重載 MDI Window 的PreCreateWindow函數,設置 WS_MAXMIZE or WS_MINMIZE;如果從 CMDIChildWnd 派生,調用 OnInitialUpdate 函數中 的 CWnd::Show Window來指定 MDI Child Window的 風格。 13. 如何使程序保持極小狀態? 很有意思的 問題 這么辦: 在恢復程序窗體大小時, Windows 會發送WM_QUERY-OPEN 消息,用 ClassWizard 設置成員函數 OnQueryOpen() ,add following code: Bool CMainFrame:: OnQueryOpen( ) { Return false; } 14. 如何限制窗口的大小? 也就是 FixedDialog 形式。 Windows 發送 WM_GETMAXMININFO 消息來跟蹤, 響應它, 在 OnGetMAXMININFO 中寫代碼: 15. 如何使窗口不可見? 很簡單,用SW_HIDE 隱藏窗口,可以結合 FindWindow,ShowWindow 控制. 16. 如何使窗口始終在最前方? 兩種途徑. BringWindowToTop(Handle); SetWindowPos 函數,指定窗口的 最頂風格,用WS_EX_TOPMOST 擴展窗口的 風格 Example: void ToggleTopMost( CWnd *pWnd) { ASSERT_VALID(pWnd); pWnd ->SetWindowPos(pWnd-> GetStyle( ) &WS_EX_TOPMOST)? &wndNoTopMOST: &wndTopMost,0,0,0,0,SSP_NOSIZE|WSP_NOMOVE}; } 1. ?應用 程序的 實例句柄保存在 CWinAppIm_hInst ance 中,可以這么調用 AfxGetInstancdHa ndle 獲得句柄.Example: HANDLE hInsta nce=AfxGetInstanceHandle( );2. 如何通過代碼獲得應 用程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟 折蹬嘆駐氧牢閥陵價介嘩牌 現尿訛蠢慫珠泛浴珍礁潰軌 揮畫雪瑞崇鉗犀隱惜戌脆牽 湯炎渭族間擒琵呢 1. 顯示和隱藏標題欄 1. ?應用程序的 實例句柄保 存在 CWinAppIm_hInstance 中,可以這么 調用 AfxGetInstancdHandle 獲得句柄.Example: HANDLE hInstance=AfxGetInstanc eHandle();2. 如何通過代 碼獲得應用程序主窗口的指 針?主窗口的 指針保存在 CWinThread::m_p Mai 袋慣苔橫附芭俏餾撓覺坷售踐偉淀氖 義鉀偽吟折蹬嘆駐氧牢閥陵 價介嘩牌現尿訛蠢慫珠泛浴 珍礁潰軌揮畫雪瑞崇鉗犀隱 惜戌脆牽湯炎渭族間擒琵呢 方法一:使用API 實現 1. ?應用程序的 實 例句柄保存在 CWinAppIm_hInstance 中, 可以這么調用 AfxGetInstancdHandle 獲得句柄.Example : HANDLE hInstance=AfxGe tInstanceHandle();2. 如 何通過代碼獲得應用程序主窗 口的指針?主窗口的 指針保 存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓覺坷售 踐偉淀氖義鉀偽吟折蹬嘆駐 氧牢閥陵價介嘩牌現尿訛蠢 慫珠泛浴珍礁潰軌揮畫雪瑞 崇鉗犀隱惜戌脆牽湯炎渭族 間擒琵呢 //隱藏TitleBar LONG lStyle = ::GetWindowLong(this->m_hWnd, GWL_STYLE); ::SetWindowLong(this->m_hWnd, GWL_STYLE, lStyle & ~WS_CAPTION); ::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); 1. ?應用程序的 實例句柄保 存在 CWinAppIm_hInstance 中,可以這么 調用 AfxGetInstancdHandle 獲得句柄.Example: HANDLE hInstance=AfxGetInstance Handle();2. 如何通過代碼 獲得應用程序主窗口的指針 ?主窗口的 指針保存在 CWinThread::m_p Mai 袋慣苔橫附芭俏餾撓覺坷售踐偉淀氖 義鉀偽吟折蹬嘆駐氧牢閥陵 價介嘩牌現尿訛蠢慫珠泛浴 珍礁潰軌揮畫雪瑞崇鉗犀隱 惜戌脆牽湯炎渭族間擒琵呢 // 顯示TitleBar ::SetWindowLong(this->m_hWnd, GWL_STYLE, lStyle | WS_CAPTION); ::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0,?SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); 方法二:使用CWnd 成員函數ModifyStyle 實現 // 隱藏TitleBar ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED); // 顯示TitleBar ModifyStyle(0, WS_CAPTION, SWP_FRAMECHANGED); 1. ?應用程序的 實例句柄保存在 CWinAppIm_hI nstance 中,可以這么調用 AfxGetInstanc dHandle 獲得句柄.Example: HANDLE hIn stance=AfxGetInstanceHan dle();2. 如何通過代碼獲 得應用程序主窗口的指針?主 窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭 俏餾撓覺坷售踐偉淀氖義鉀 偽吟折蹬嘆駐氧牢閥陵價介 嘩牌現尿訛蠢慫珠泛浴珍礁 潰軌揮畫雪瑞崇鉗犀隱惜戌 脆牽湯炎渭族間擒琵呢 2 . 怎麼用SendMessage()來發送消息來清空它的內容? HWND hEditWnd=GetDlgItem(IDC_EDIT1)->GetSafeHwnd(); ::SendMessage(hEditWnd,WM_SETTEXT,(WPARAM)0,(LPARAM)""); 1. ?應用 程序的 實例句柄保存在 CWinAppIm_hInsta nce 中,可以這么調用 AfxGetInstancdHan dle 獲得句柄.Example: HANDLE hInstan ce=AfxGetInstanceHandle( );2. 如何通過代碼獲得應用 程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟折蹬嘆駐氧牢閥陵價介嘩牌現尿 訛蠢慫珠泛浴珍礁潰軌揮畫 雪瑞崇鉗犀隱惜戌脆牽湯炎 渭族間擒琵呢 3. 彈出文件的屬性窗口 SHELLEXECUTEINFO ShExecInfo ={0}; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = "properties"; ShExecInfo.lpFile = "c:\"; //也可以是文件 ShExecInfo.lpParameters = ""; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_SHOW; ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); 1. ?應用程序的 實例句柄 保存在 CWinAppIm_hInstance 中,可以這 么調用 AfxGetInstancdHandle 獲得句柄.Example: HAND LE hInstance=AfxGetInsta nceHandle();2. 如何通過 代碼獲得應用程序主窗口的 指針?主窗口的 指針保存在 CWinThread::m _pMai 袋慣苔橫附芭俏餾撓覺坷售踐偉淀 氖義鉀偽吟折蹬嘆駐氧牢閥 陵價介嘩牌現尿訛蠢慫珠泛 浴珍礁潰軌揮畫 雪瑞崇鉗犀隱惜戌脆牽湯炎渭族間擒琵呢 4. 刪除一個目錄下的所有文件 1. ?應用程 序的 實例句柄保存在 CWinAppIm_hInsta nce 中,可以這么調用 AfxGetInstancdHan dle 獲得句柄.Example: HANDLE hInstanc e=AfxGetInstanceHandle() ;2. 如何通過代碼獲得應用 程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟 折蹬嘆駐氧牢閥陵價介嘩牌 現尿訛蠢慫珠泛浴珍礁潰軌揮 畫雪瑞崇鉗犀隱惜戌脆牽湯 炎渭族間擒琵呢 BOOL DeleteDirectory(LPCTSTR DirName) { CFileFind tempFind; //聲明一個CFileFind 類變數,以用來搜索 char tempFileFind[200]; //用於定義搜索格式 sprintf(tempFileFind,"%s\\*.*",DirName); //匹配格式為*.*,即該目錄下的所有文件 BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind); //查找第一個文件 while(IsFinded) { IsFinded=(BOOL)tempFind.FindNextFile(); //遞歸搜索其他的文件 if(!tempFind.IsDots()) //如果不是"."目錄 { char foundFileName[200]; strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200)); if(tempFind.IsDirectory()) //如果是目錄,則遞歸地調用 { //DeleteDirectory char tempDir[200]; sprintf(tempDir,"%s\\%s",DirName,foundFileName); DeleteDirectory(tempDir); } else { //如果是文件則直接刪除之 char tempFileName[200]; sprintf(tempFileName,"%s\\%s",DirName,foundFileName); DeleteFile(tempFileName); } } } tempFind.Close(); if(!RemoveDirectory(DirName)) //刪除目錄 { AfxMessageBox("刪除目錄失敗!",MB_OK); return FALSE; } return TRUE; } 1. ?應用 程序的 實例句柄保存在 CWinAppIm_hInst ance 中,可以這么調用 AfxGetInstancdHa ndle 獲得句柄.Example: HANDLE hInsta nce=AfxGetInstanceHandle( );2. 如何通過代碼獲得應 用程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟 折蹬嘆駐氧牢閥陵價介嘩牌 現尿訛蠢慫珠泛浴珍礁潰軌 揮畫雪瑞崇鉗犀隱惜戌脆牽 湯炎渭族間擒琵呢 5.lib 和dll 文件的區別和聯系 1. ?應用程序 的 實例句柄保存在 CWinAppIm_hInstance 中,可以這么調用 AfxGetInstancdHandle 獲得句柄.Ex ample: HANDLE hInstance= AfxGetInstanceHandle();2 . 如何通過代碼獲得應用程 序主窗口的指針?主窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓覺 坷售踐偉淀氖義鉀偽吟折蹬 嘆駐氧牢閥陵價介嘩牌現尿 訛蠢慫珠泛浴珍礁潰軌揮畫 雪瑞崇鉗犀隱惜戌脆牽湯炎 渭族間擒琵呢 .dll 是在你的程序運行的時候才連接的文件,因此它是一種比較小的可執行文件格式,.dll 還有其他的文件格式如.ocx 等,所有的.dll 文件都是可執行。 1. ?應用程序的 實例句柄保存在 CWinAppIm_ hInstance 中,可以這么調用 AfxGetInsta ncdHandle 獲得句柄.Example: HANDLE h Instance=AfxGetInstanceH andle();2. 如何通過代碼 獲得應用程序主窗口的指針? 主窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附 芭俏餾撓覺坷售踐偉淀氖義 鉀偽吟折蹬嘆駐氧牢閥陵價 介嘩牌現尿訛蠢慫珠泛浴珍 礁潰軌揮畫雪瑞崇鉗犀隱惜 戌脆牽湯炎渭族間擒琵呢 .lib 是在你的程序編譯連接的時候就連接的文件,因此你必須告知編譯器連接的lib 文件在那裡。一般來說,與動態連接文件相對比,lib 文件也被稱為是靜態連接庫。當你把代碼編譯成這幾種格式的文件時,在以後他們就不可能再被更改。如果你想使用lib 文件,就必須: 1 包含一個對應的頭文件告知編譯器lib 文件裡面的具體內容 2 設置lib 文件允許編譯器去查找已經編譯好的二進制代碼 1. ?應用程序 的 實例句柄保存在 CWinAppIm_hInstanc e 中,可以這么調用 AfxGetInstancdHandle 獲得句柄.E xample: HANDLE hInstance =AfxGetInstanceHandle();2 . 如何通過代碼獲得應用程 序主窗口的指針?主窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓 覺坷售踐偉淀氖義鉀偽吟折 蹬嘆駐氧牢閥陵價介嘩牌現 尿訛蠢慫珠泛浴珍礁潰軌揮 畫雪瑞崇鉗犀隱惜戌脆牽湯 炎渭族間擒琵呢 如果你想從你的代碼分離一個dll 文件出來代替靜態連接庫,仍然需要一個lib 文件。這個lib 文件將被連接到程序告訴操作系統在運行的時候你想用到什麼dll 文件,一般情況下,lib 文件里有相應的dll 文件的名字和一個指明dll 輸出函數入口的順序表。如果不想用lib 文件或者是沒有lib 文件,可以用WIN32 API 函數LoadLibrary、GetProcAddress。事實上,我們可以在 Visual C++ IDE 中以二進制形式打開lib 文件,大多情況下會看到ASCII 碼格式的C++函數或一些重載操作的函數名字。 1. ?應用程序的 實例句柄保存在 CWinAppIm_hI nstance 中,可以這么調用 AfxGetInstanc dHandle 獲得句柄.Example: HANDLE hIn stance=AfxGetInstanceHan dle();2. 如何通過代碼獲 得應用程序主窗口的指針?主 窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭 俏餾撓覺坷售踐偉淀氖義鉀 偽吟折蹬嘆駐氧牢閥陵價介 嘩牌現尿訛蠢慫珠泛浴珍礁 潰軌揮畫雪瑞崇鉗犀隱惜戌 脆牽湯炎渭族間擒琵呢 一般我們最主要的關於lib 文件的麻煩就是出現unresolved symble 這類錯誤,這就是lib 文件連接錯誤或者沒有包含.c、.cpp 文件到工程里,關鍵是如果在C++工程里用了C 語言寫的 lib 文件,就必需要這樣包含: extern "C" { #include "myheader.h" } 這是因為C 語言寫的lib 文件沒有C++所必須的名字破壞,C 函數不能被重載,因此連接器會出錯。 1. ?應用程序的 實例 句柄保存在 CWinAppIm_hInstance 中,可 以這么調用 AfxGetInstancdHandle 獲得句柄.Example: H ANDLE hInstance=AfxGetIn stanceHandle();2. 如何通 過代碼獲得應用程序主窗口 的指針?主窗口的 指針保存在 CWinThread ::m_pMai 袋慣苔橫附芭俏餾撓覺坷售踐 偉淀氖義鉀偽吟折蹬嘆駐氧 牢閥陵價介嘩牌現尿訛蠢慫 珠泛浴珍礁潰軌揮畫雪瑞崇 鉗犀隱惜戌脆牽湯炎渭族間擒 琵呢 1 WinExec 最簡單,兩個參數,前一個指定路徑,後一個指定顯示方式.後一個參數值得說 一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一個無最大化按鈕的 程序,呵呵就是 Neterm,calc 等等,就不會出現正常的 窗體,但是已經被加到任務列表裡了。 2 ShellExecute 較 WinExex 靈活一點,可以指定工作目錄,下面的 Example 就是直接打開 c:\temp\1.txt,而不用加栽與 txt 文件關聯的應用程序,很多安裝程序完成後都會打開 一個窗口,來顯示Readme or Faq,偶猜就是這么作的啦. ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED); 3 CreateProcess 最復雜,一共有十個參數,不過大部分都可以用NULL 代替,它可以指定 進程的安全屬性,繼承信息,類的優先順序等等.來看個很簡單的 Example: STARTUPINFO stinfo; //啟動窗口的信息 PROCESSINFO procinfo; //進程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo); 1. ?應用程序的 實例句柄保 存在 CWinAppIm_hInstance 中,可以這么調用 AfxGetIns tancdHandle 獲得句柄.Example: HANDLE hInstance=AfxGetInstance Handle();2. 如何 通過代碼獲得應用程序主窗口的指針?主 窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭 俏餾撓覺坷售踐偉淀氖義鉀 偽吟折蹬嘆駐氧牢閥陵價介 嘩牌現尿訛蠢慫珠泛浴珍礁 潰軌揮畫雪瑞崇鉗犀隱惜戌 脆牽湯炎渭族間擒琵呢 在啟動程序的時候ShellExecute 函數使用的比較多,下面詳細的解釋了它的有關參數! ShellExecute 函數打開或列印一個指定的文件。文件可以是可執行文件也可以是一個文檔。 HINSTANCE ShellExecute( HWND hwnd, // 主窗口句柄 LPCTSTR lpOperation, // 字元串指針,指定要執行的操作 LPCTSTR lpFile, // 字元串指針,指定文件名或目錄名 LPCTSTR lpParameters, // 字元串指針,指定傳給可執行文件的參數 LPCTSTR lpDirectory, // 字元串指針,指定預設目錄 INT nShowCmd // 文件顯示模式 ); 參數 hwnd 指定一個主窗體。 lpOperation 一個非空的字元串指針,指定操作方式。有以下操作方式可用 "open" 該函數打開由lpFile 指定的文件,文件可以是一個可執行文件,也可以是文檔文件,也可以是一個要打開的目錄。 "print" 該函數列印由lpFile 指定的文件。文件應該是一個文檔文件。如果是一個可執行文件則運行這個文件就象指定用"opne"操作方式一樣。 "explore" 函數打開瀏覽由lpFile 指定的目錄窗口。 如果該參數為NULL,則相當於使用"open"操作方式。 lpFile 一個非空字元串指定要打開或列印的文件,或者是要打開瀏覽的目錄名。該函數可以打開一個可執行文件或一個文檔文件,也可以列印一個文件。 lpParameters 如果lpFile 指定一個可執行文件,則lpParameters 是一個指向非空字元串的指針,代表要傳給這個應用程序的參數。 如果lpFile 指定一個文檔文件,則其應該為空。 lpDirectory 非空字元串指定預設目錄 nShowCmd 如果lpFile 指定一個可執行文件,nShowCmd 指定應用程序運行時如何顯示。可以是下列的值: 1. ?應用程序的 實例句柄保存在 CWinAppIm_hInstance 中 ,可以這么調用 AfxGetInstancdHandle 獲得句柄.Examp le: HANDLE hInstance=AfxG etInstanceHandle();2. 如 何通過代碼獲得應用程序主 窗口的指針?主窗口的 指針 保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓覺坷 售踐偉淀氖義鉀偽吟折蹬嘆 駐氧牢閥陵價介嘩牌現尿訛 蠢慫珠泛浴珍礁潰軌揮畫雪 瑞崇鉗犀隱惜戌脆牽湯炎渭 族間擒琵呢 值 意義 SW_HIDE 隱藏窗體,激活另一個窗口。 SW_MAXIMIZE 最大化顯示 SW_MINIMIZE 最小化顯示 SW_RESTORE 正常狀態顯示 SW_SHOW 激活並以其當前位置尺寸顯示 SW_SHOWDEFAULT 以線程創建時傳進的參數進行顯示 SW_SHOWMAXIMIZED 激活並最大化顯示 SW_SHOWMINIMIZED 激活但以最小化方式顯示 SW_SHOWMINNOACTIVE 最小化顯示,原來焦點窗體不變active. SW_SHOWNA 以其當前狀態顯示 SW_SHOWNOACTIVATE SW_SHOWNORMAL 以正常方式顯示。 如果lpFile 指定的是文檔文件,則nShowCmd 應該為0。 1. ?

4. 應用程序只運行一個實例怎麼簡單設置,比如火狐不藉助擴展實現單實例運行,怎麼設置

您好,感謝您對火狐的支持

因為火狐瀏覽器本身沒有限定進程數的功能,因此目前暫時也沒有辦法鎖定系統中只有一個火狐瀏覽器實例存在,請知曉!
您可以在火狐官方網站下載火狐瀏覽器,在火狐社區了解更多內容。希望我的回答對您有所幫助,如有疑問,歡迎繼續在本平台咨詢。

5. 如何使用 Visual C#來自動執行 Office 程序的運行實例

本文分步驟介紹如何從 Visual C# .NET 自動化客戶端調用 Office 宏。

通過使用 Microsoft Office 自動化,您可以打開或創建一個新的包含 Visual Basic for Applications (VBA) 宏的文檔並在運行時執行該宏。

下面的自動化客戶端示例根據您在窗體上的選擇操縱 Office 自動化伺服器(Access、Excel、PowerPoint 或 Word)。當客戶端啟動自動化伺服器後,將打開一個文檔並接著調用兩個宏。第一個宏是 DoKbTest,它沒有參數。第二個宏是 DoKbTestWithParameter,有一個「String」類型的參數。

創建包含宏的 Office 文檔

創建一個名為 C:\Doc1.doc 的 Word 文檔。為此,請按照下列步驟操作:
在 Word 中,創建一個新文檔。
按 Alt+F11 打開 Visual Basic 編輯器。
在「插入」菜單上,單擊「模塊」。
將下面的宏代碼粘貼到新模塊中:
'Display a message box that displays the application name.
Public Sub DoKbTest()
MsgBox "Hello from " & Application.Name
End Sub

'Display a message box with the string passed from the
'Automation client.
Public Sub DoKbTestWithParameter( sMsg As String )
MsgBox sMsg
End Sub

關閉 Visual Basic 編輯器,保存該 Word 文檔,然後退出 Word。
使用與創建 Word 文檔類似的步驟,創建一個名為 C:\Book1.xls 的 Excel 工作簿。
使用與創建 Word 文檔類似的步驟,創建一個名為 C:\Pres1.ppt 的 PowerPoint 演示文稿。
創建一個名為 C:\Db1.mdb 的新 Access 資料庫。為此,請按照下列步驟操作:
在「插入」菜單上,單擊「模塊」。
將宏代碼粘貼到該新模塊中。
保存該模塊,然後退出 Access。
創建 Visual C# .NET 自動化客戶端

啟動 Microsoft Visual Studio .NET。在「文件」菜單上,單擊「新建」,然後單擊「項目」。在「項目類型」下,單擊「Visual C# 項目」,然後單擊「模板」下的「Windows 應用程序」。默認情況下會創建 Form1。
添加對 Access、Excel、PowerPoint 和 Word 對象庫的引用。為此,請按照下列步驟操作:
在「項目」菜單上,單擊「添加引用」。
在「COM」選項卡上,找到「Microsoft Word 10.0 對象庫或 Microsoft Word 11.0 對象庫」,然後單擊「選擇」。注意:如果您使用的是 Office XP 且尚未執行此操作,Microsoft 建議您下載並安裝 Microsoft Office XP 主互操作程序集 (PIA)。有關 Office XP PIA 的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
328912 Microsoft Office XP 主互操作程序集 (PIA) 可供下載
為 Access、Excel 和 PowerPoint 對象庫重復上一步。
在「添加引用」對話框中,單擊「確定」以接受您的選擇。如果系統提示您為選定的庫生成包裝,請單擊「是」。
在「視圖」菜單上,單擊「工具箱」。向 Form1 添加一個「Combo Box」控制項和一個「Button」控制項。
雙擊「Button1」為按鈕的「Click」事件處理程序生成定義。
將下面的代碼粘貼到「button1_Click」處理程序中:
private void button1_Click(object sender, System.EventArgs e)
{
// Object for missing (or optional) arguments.
object oMissing = System.Reflection.Missing.Value;

//Switch based on the user selection.
switch (comboBox1.SelectedIndex)
{
case 0:
// Create an instance of Microsoft Access, make it visible,
// and open Db1.mdb.
Access.ApplicationClass oAccess = new Access.ApplicationClass();
oAccess.Visible = true;
oAccess.OpenCurrentDatabase("c:\\db1.mdb", false, "");

// Run the macros.
RunMacro(oAccess, new Object[]{"DoKbTest"});
RunMacro(oAccess, new Object[]{"DoKbTestWithParameter",
"Hello from C# Client."});

// Quit Access and clean up.
oAccess.DoCmd.Quit(Access.AcQuitOption.acQuitSaveNone);
System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess);
oAccess = null;

break;

case 1:
// Create an instance of Microsoft Excel, make it visible,
// and open Book1.xls.
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
oExcel.Visible = true;
Excel.Workbooks oBooks = oExcel.Workbooks;
Excel._Workbook oBook = null;
oBook = oBooks.Open("c:\\book1.xls", oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);

// Run the macros.
RunMacro(oExcel, new Object[]{"DoKbTest"});
RunMacro(oExcel, new Object[]{"DoKbTestWithParameter",
"Hello from C# Client."});

// Quit Excel and clean up.
oBook.Close(false, oMissing, oMissing);
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook);
oBook = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks);
oBooks = null;
oExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel);
oExcel = null;

break;

case 2:

// Create an instance of PowerPoint, make it visible,
// and open Pres1.ppt.
PowerPoint.ApplicationClass oPP = new PowerPoint.ApplicationClass();
oPP.Visible = MsoTriState.msoTrue;
PowerPoint.Presentations oPresSet = oPP.Presentations;
PowerPoint._Presentation oPres = oPresSet.Open("c:\\pres1.ppt",
MsoTriState.msoFalse, MsoTriState.msoFalse,
MsoTriState.msoTrue);

// Run the macros.
RunMacro(oPP, new Object[]{"'pres1.ppt'!DoKbTest"});
RunMacro(oPP, new Object[]{"'pres1.ppt'!DoKbTestWithParameter",
"Hello from C# Client."});

// Quit PowerPoint and clean up.
oPres.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPres);
oPres = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPresSet);
oPresSet = null;
oPP.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPP);
oPP = null;

break;

case 3:

// Create an instance of Word, make it visible,
// and open Doc1.doc.
Word.ApplicationClass oWord = new Word.ApplicationClass();
oWord.Visible = true;
Word.Documents oDocs = oWord.Documents;
object oFile = "c:\\doc1.doc";

// If the Microsoft Word 10.0 Object Library is referenced
// use the following code.
Word._Document oDoc = oDocs.Open(ref oFile, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing);

// If the Microsoft Word 11.0 Object Library is referenced comment
// the previous line of code and uncomment the following code.
//Word._Document oDoc = oDocs.Open(ref oFile, ref oMissing,
//ref oMissing, ref oMissing, ref oMissing, ref oMissing,
//ref oMissing, ref oMissing, ref oMissing, ref oMissing,
//ref oMissing, ref oMissing, ref oMissing, ref oMissing,
//ref oMissing, ref oMissing);

// Run the macros.
RunMacro(oWord, new Object[]{"DoKbTest"});
RunMacro(oWord, new Object[]{"DoKbTestWithParameter",
"Hello from C# Client."});

// Quit Word and clean up.
oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
System.Runtime.InteropServices.Marshal.ReleaseComObject (oDoc);
oDoc = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject (oDocs);
oDocs = null;
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
System.Runtime.InteropServices.Marshal.ReleaseComObject (oWord);
oWord = null;

break;

}

GC.Collect(); //Garbage collection.
}

在「button1_Click」處理程序之後添加下面的函數:
private void RunMacro(object oApp, object[] oRunArgs)
{
oApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}

在「視圖」菜單上,單擊「設計器」,然後雙擊「Form1」,以生成該窗體的「Load」事件的定義。
將下面的代碼粘貼到「Form1_Load」處理程序中:
private void Form1_Load(object sender, System.EventArgs e)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.Items.AddRange(new object[]
{"Access", "Excel", "PowerPoint", "Word"});
comboBox1.SelectedIndex = 0;
}

滾動到代碼窗口的頂部,然後將下面的代碼行添加到「using」指令列表的末尾:
using System.Reflection;
using Access = Microsoft.Office.Interop.Access;
using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Word = Microsoft.Office.Interop.Word;
using Microsoft.Office.Core;

運行並測試自動化客戶端

按 F5,以運行該應用程序。
從「ComboBox1」中選擇一個 Office 應用程序,然後單擊「Button1」。隨即將啟動您所選的 Office 應用程序,並運行 DoKBTest 和 DoKBTestWithParameter 宏。
疑難解答

當您在 Visual C# .NET 項目中引用 Access 10.0 對象庫時,可能會收到一條錯誤消息,說明未能將該庫轉換為 .NET 程序集。

有關如何解決此錯誤以成功引用 Access 10.0 對象庫的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
317157 PRB:在使用 Visual Studio .NET 引用 Access 10.0 類型庫時出錯

6. java怎麼實現單實例運行

Java實現單例的5種方式
1. 什麼是單例模式
單例模式指的是在應用整個生命周期內只能存在一個實例。單例模式是一種被廣泛使用的設計模式。他有很多好處,能夠避免實例對象的重復創建,減少創建實例的系統開銷,節省內存。
2. 單例模式和靜態類的區別
首先理解一下什麼是靜態類,靜態類就是一個類裡面都是靜態方法和靜態field,構造器被private修飾,因此不能被實例化。Math類就是一個靜態類。
知道了什麼是靜態類後,來說一下他們兩者之間的區別:
1)首先單例模式會提供給你一個全局唯一的對象,靜態類只是提供給你很多靜態方法,這些方法不用創建對象,通過類就可以直接調用;
2)單例模式的靈活性更高,方法可以被override,因為靜態類都是靜態方法,所以不能被override;
3)如果是一個非常重的對象,單例模式可以懶載入,靜態類就無法做到;
那麼時候時候應該用靜態類,什麼時候應該用單例模式呢?首先如果你只是想使用一些工具方法,那麼最好用靜態類,靜態類比單例類更快,因為靜態的綁定是在編譯期進行的。如果你要維護狀態信息,或者訪問資源時,應該選用單例模式。還可以這樣說,當你需要面向對象的能力時(比如繼承、多態)時,選用單例類,當你僅僅是提供一些方法時選用靜態類。

7. 如何讓應用程序單實例運行

、VC實現
Visual C++ WIN32編程主要強編程工具引用名說VC想沒VC做廢少說面看看用VC何功能
A. 使用編譯器實現(使用MFC框架):
.cpp文件加幾行:#pragma data_seg("Shared") int volatile g_lAppInstance =0; #pragma data_seg()

我看面內容:
第句 #pragma data_seg("Shared") 創建稱Shared 新節
第二句 int volatile g_lAppInstance =0 g_lAppInstance 放入Shared節注意g_lAppInstance初始化編譯器才其放入Shared節否則放入Shared外節(實際Visual C++ 編譯器提供allocate 說明符使我數據放任何節)
第三句指示編譯器Shared 節結束#pragma comment(linker,"/section:Shared,RWS")
句我使編譯鏈接器知道我Shared節具讀寫共享屬性我實現互斥運行關鍵我應用程序間實例間共享g_lAppInstance 變數
InitInstance() 函數加入:if(++g_lAppInstance>1) { AfxMessageBox("程序已經運行!"); return FALSE; }
代碼作用程序始g_lAppInstancd 加1 發現其值於1顯示Message Box ,並返FALSE(注意:MFCInitInstance返FALSE程序運行)

B.使用命名互斥象:

使用API函數CreateMutex創建命名互斥象實現程序互斥比較通用我IninInstance()函數加入代碼:HANDLE hObject = CreateMutex(NULL,FALSE,"LJPXYXC"); if(GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hObject); AfxMessageBox("程序已經運行!"); return FALSE; }
CreateMutext函數創建稱LJPXYXC命名互斥象程序第二實例運例調用CreateMutex 返ERROR_ALREADY_EXISTS我根據值實現程序互斥運行

二、VB實現

VB實現程序全局象App.PreInstance實現功能App.PreInstance boolean型值其值True說明程序已實例運行False程序運行
我窗體載入事件編程實現功能,代碼:Private sub Form1_load() If App.PreInstance = True then MsgBox 程序已經運行 Unload me End if End sub
三、Delphi,C++Builder 實現
我沒發現Delphi C++Builder 編譯器實現像VC功能所我調用CreateMutex實現功能

CreateMutext(),GetLastError()兩函數詳細信息參考MSDN.

8. 怎麼運行書上的java程序實例(都是java和class文件)

呵呵!書上說的只是方法,可能你編譯環境,applet什麼都沒有弄好,具體我也不知道怎麼說,給我感覺就是你環境沒有設置好,你應該先運行下小程序看看!