1. 程式人生 > >Windows VC++ 調整程序當前目錄為程式可執行檔案所在目錄

Windows VC++ 調整程序當前目錄為程式可執行檔案所在目錄

    調整程序當前目錄為程式可執行檔案所在目錄是個非常實用的方法。為了更加的讓程式碼複用,本文將調整程序當前目錄為程式可執行檔案所在目錄這一功能封裝為三個實用函式——

1SplitPathFileName

這個函式將檔案全名(帶路徑)分解成路徑名,檔名,字尾名。

2GetProcessPathNameAndFileName

得到當前程序可執行檔案的路徑名,檔名,字尾名。

3AdjustProcessCurrentDirectory

調整程序當前目錄為程式可執行檔案所在目錄

各函式使用示範可以參見如下程式:

//調整程序當前目錄為程式可執行檔案所在目錄
//http://blog.csdn.net/morewindows/article/details/8683519
//By MoreWindows( http://blog.csdn.net/MoreWindows )
#include <windows.h>
#include <stdio.h>
#include <conio.h>

//將檔案全名(帶路徑)分解成路徑名,檔名,字尾名
//C:\test\test.exe -> "C:\test\", "test", ".exe"
//By MoreWindows( http://blog.csdn.net/MoreWindows )
void SplitPathFileName(const char *pstrPathFileName, char *pstrPath, char *pstrFileName, char *pstrExtName)
{
	if (pstrPath != NULL)
	{
		char szTemp[MAX_PATH];
		_splitpath(pstrPathFileName, pstrPath, szTemp, pstrFileName, pstrExtName);
		strcat(pstrPath, szTemp);
	}
	else
	{
		_splitpath(pstrPathFileName, NULL, NULL, pstrFileName, pstrExtName);
	}
}

//得到當前程序可執行檔案的路徑名,檔名,字尾名
//如執行C:\test\test.exe 得到 "C:\test\", "test", ".exe"
//By MoreWindows( http://blog.csdn.net/MoreWindows )
BOOL GetProcessPathNameAndFileName(char *pstrPath, char *pstrFileName, char *pstrExtName)
{
	char szExeFilePathFileName[MAX_PATH];
	if (GetModuleFileName(NULL, szExeFilePathFileName, MAX_PATH) == 0)
		return FALSE;
	
	SplitPathFileName(szExeFilePathFileName, pstrPath, pstrFileName,pstrExtName);
	return TRUE;
}

//調整程序當前目錄為程式可執行檔案所在目錄
//By MoreWindows( http://blog.csdn.net/MoreWindows )
BOOL AdjustProcessCurrentDirectory()
{
	char szPathName[MAX_PATH];
	GetProcessPathNameAndFileName(szPathName, NULL, NULL);
	return SetCurrentDirectory(szPathName);
}



int main()
{
	printf("    調整程序當前目錄為程式可執行檔案所在目錄 \n");        
	printf(" - http://blog.csdn.net/morewindows/article/details/8683519 -\n");
	printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n");  

	char szCurrentDirectory[MAX_PATH];
	GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
	printf("程序當前目錄為: \n%s\n", szCurrentDirectory);

	AdjustProcessCurrentDirectory();

	GetCurrentDirectory(MAX_PATH, szCurrentDirectory);
	printf("\n調整後,程序當前目錄為: \n%s\n", szCurrentDirectory);
	getch();
	return 0;
}

通過CMD來呼叫這個程式看看。

 

由圖可以看出,程式的當前目錄已經被調整到程式可執行檔案所在目錄了。

附1:得到程式所在目錄還可以使用PathRemoveFileSpec函式。20130507


相關推薦

Windows VC++ 調整程序當前目錄程式執行檔案所在目錄

    調整程序當前目錄為程式可執行檔案所在目錄是個非常實用的方法。為了更加的讓程式碼複用,本文將調整程序當前目錄為程式可執行檔案所在目錄這一功能封裝為三個實用函式——1.SplitPathFileName這個函式將檔案全名(帶路徑)分解成路徑名,檔名,字尾名。2.GetPr

'假定以下程式經編譯和連線後生成執行檔案PROG.EXE,如果在此執行檔案所在目錄的DOS提示符下鍵入:PROG ABCDEFGH IJKL<回車>,則輸出結果( ). void main( int argc, char *argv[]) { while(--argc>

main(int argc,char *argv[])函式的兩個形參,第一個int argc,是記錄你輸入在命令列(你題目中說的操作就是命令列輸入)上的字串個數;第二個*argv[]是個指標陣列,存放輸入在命令列上的命令(字串)。當命令列輸入PROG ABCDEFGH IJKL時,記錄了3

VC++6.0 MFC獲取當前工作路徑和執行檔案路徑

1. 獲取Debug或Release所在的路徑 CString GetModuleDir() { HMODULE module = GetModuleHandle(0); char pFileName[MAX_PATH]; GetModuleFileName(mod

JAR檔案匯出.exe執行檔案

為什麼要匯出為.exe檔案? ①客戶需求,客戶有這樣的需求,程式設計師得完成釋出的任務。 ②jar執行需要將其Java專案所需要的jar檔案放置在同一個資料夾之中,難以管理。 ③相對而言,匯出為.exe檔案所佔用的儲存空間更少。 ④最重要的一點,可以通過相關方法將jdk整合到.exe檔案

eclipse如何把java程式碼,打包成jar檔案以及轉換exe執行檔案

1、背景:     學習java時,教材中關於如題問題,只有一小節說明,而且要自己寫麻煩的配置檔案,最終結果卻只能轉換為jar檔案。實在是心有不爽。此篇部落格教你如何方便快捷地把java程式碼,打包成jar檔案以及轉換為exe可執行檔案 2、前言:     我們都知道

eclipse -- 手把手教你如何把java程式碼,打包成jar檔案以及轉換exe執行檔案

1、背景:     學習java時,教材中關於如題問題,只有一小節說明,而且要自己寫麻煩的配置檔案,最終結果卻只能轉換為jar檔案。實在是心有不爽。此篇部落格教你如何方便快捷地把java程式碼,打包成jar檔案以及轉換為exe可執行檔案 2、前言:     我們都知道Java可以將二進位制程式打包成可執

python與機器視覺(X)打包exe執行檔案

利用pyinstaller將.py 程式打包成可執行檔案 1. TL;DR 安裝:pip install pyinstaller 使用pyinstaller mycode.py,在dist資料夾下就能看到.exe程式了。 2.簡介 PyInstalle

根據程序控制代碼 獲得執行檔案路徑 的幾種方法

通過程序控制代碼,獲得可執行檔案的路徑,主要有以下幾種方法: 第一種方法:也是最常用的方法,是通過GetModuleFileNameEx函式獲得可執行檔案的模組路徑,這個函式從Windows NT 4.0開始到現在的Vista系統都能使用,向後相容性比較好。 【函式

將Python程式(.py)轉換Windows執行檔案(.exe)

將Python程式(.py)轉換為Windows可執行檔案(.exe) python開發者向普通windows使用者分享程式,要給程式加圖形化的介面(EasyGUI 學習文件)(在前面的課程中目前只學習了最簡單的EasyGui,後面還會繼續學習 GUI的終極選擇:Tkinter,敬請期待),

windows 簡單殺死程序的批處理程式

公司的電腦,記憶體吃緊了。電腦中有些暫時不用的軟體程序會隨開機啟動,又不想解除安裝軟體,用windows 自帶的taskkill命令終止想要結束的程序。 新建一個txt文件,命令為taskkill.bat,複製下面的命令儲存 @echo off taskkill /F

BASE_DIR 在入口文件中設置項目目錄模塊查找的目錄

clas 模塊 bubuko inf span 圖片 port app color import sys,os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.

Python代碼轉換exe執行程序詳解

.net 問題 .py fontsize avi 安裝配置 ofo pts b2c 一,簡介 Python寫完程序,要靠命令來執行太LOW,太低調了,還不華麗了。 再說別人的電腦,都沒有Python庫,怎麽執行,還能不能愉快的一起玩耍了。 所以哪怕只會寫一個HelloWor

JupyterNoteBook的根目錄,程式裡面生成檔案所在目錄及開啟.ipynb檔案的方式

1.JupyterNoteBook的根目錄在C:\Users\Administrator\Documents下面,在頁面上新建的所有新檔案也都在這個目錄下面,所有未顯式指定完整路徑的生成檔案都儲存在這裡。比如我在目錄C:\Users\Administrator\Documents\CrawlMaoY

how to mount /system as read/write in android? 在除錯RK3288的OV2718的驅動時,需要remount /system目錄rw以push檔案到/system/lib/hw目錄下,常規的是用adb登入上去後以root許可權執行mount -o re

在除錯RK3288的OV2718的驅動時,需要remount  /system目錄為rw以push檔案到/system/lib/hw目錄下,常規的是用adb登入上去後以root許可權執行mount -o remount,rw /system即可,然而在拿的新板子後這麼做失效了,於是百

Python程式碼轉換exe執行程式

一,簡介 Python寫完程式,要靠命令來執行太LOW,太低調了,還不華麗了。 再說別人的電腦,都沒有Python庫,怎麼執行,還能不能愉快的一起玩耍了。 所以哪怕只會寫一個HelloWorld,也要弄成exe程式,方便偉大的程式碼傳播事業。 其實很簡單,有一個現成的p

JAVA輸入/輸出流程式例題(檔案目錄、位元組流、字元流)

一.檔案和目錄 1.顯示檔案的基本資訊。 2.顯示目錄的基本資訊。 3.在指定目錄下建立單個檔案。 4.指定目錄下建立多個臨時檔案。 二、位元組流 1.生成ZIP壓縮檔案 2.解壓縮zip檔案 3.生成Excel檔案 4.讀取excel檔案 5.生成PDF檔案 6.讀取P

如何將程式執行檔案和靜態載入動態庫放在不同的目錄

一般windows程式的exe和dll需要放在同一個目錄,靜態載入才不會報錯,否則需要修改path環境變數,將所有沒有和exe放在同一目錄的dll的路徑加在path環境變數中。 有沒有一種方法不去手動修改path環境變數並且可以將exe和dll隨心所欲的改變路徑呢?我沒有發

Python程式碼轉換exe執行程式詳解

1:安裝pyinstaller pip install pyinstaller 2,製作exe 1,先寫一個hello.py print('hello world!') input() 2.執行(在script資料夾下) pyinstaller  -F ../project/hell

執行檔案的裝載與程序的一點小總結 《程式設計師的自我修養》·筆記

可執行檔案的裝載與程序小結 程序的虛擬地址空間   每個程式被執行起來之後都擁有自己獨立的虛擬地址空間,這個虛擬地址空間的大小是CPU的位數決定的。比如,32位的硬體平臺決定了虛擬地址空間的地址為

linux、windows下的程序間的通訊方式、執行緒間的通訊方式

Linux程序間的通訊方式:管道、有名管道、訊號量、訊息佇列、共享記憶體、訊號、socket Windows程序間的通訊方式:管道、訊號量、訊息佇列、共享記憶體、socket Linxu執行緒間的通訊方式:互斥量、條件變數、訊號量、訊號 Windows執行