2010-07-29 14 views
5

Olası Çoğalt:
How to get the application executable name in Windows (C++ Win32 or C++/CLI)?işlem çalışan EXE saklanır hangi dizin bul

Ben süreç GetCurrentDirectory() kullanarak çalışan hangi dizin bulmak, ama ne dizini bulma konusunda edebilirsiniz executabke içeride mi?

+0

bu soru ayrıdır [uygulama yürütülebilir adını almak için nasıl Windows'da (C++ Win32 veya C++/CLI)?] (http://stackoverflow.com/q/124886/145173) Bu soru, dizine giden yolu nasıl alacağınızı sorar. Diğer soru, dosyanın yolunu nasıl alacağını soruyor. –

+0

Bu, anlamlı bir şekilde farklı değildir (* kabul edilen * bu yanıtın nasıl bağlandıklarıyla aynı işleve sahip olduğunu, sadece daha az ayrıntıyla) not etmeyin. Sonucu dizin ve dosya ismine bölerek önemsizdir. –

cevap

12

GetModuleFileName veya GetModuleFileNameEx. "C: \ fan \ fan \ executable_name.exe" görsel C++

+1

Bir örnek verebilir misiniz? HMODULE tutamacını nereden aldığım belli değil. –

+1

@John: 'GetModuleHandle (NULL)' –

+0

Ana çalıştırılabilir dosyayı istiyorsanız, 'GetModuleHandle (NULL)'. Bir DLL istiyorsanız, DllMain 'çağrıldığında bu DLL tanıtıcısı (diğer şeyler arasında) geçti. –

-2

biz

gibi bir dize döndürür
CString m_sAppFolder = __targv[0] ; 

kullanmak

+3

-1 için: 1. MFC'ye bağımlı olmayan bağımlılık. 2. Neil Moss'in cevabıyla aynı problemi yaşamak. 3. Standart olmayan '__targv' kullanma. –

+1

Bu teknik kullanılmamalıdır. CreateProcess'in arayanları argv [0] 'için istedikleri değeri oluşturabilirler - hatta var olmak zorunda değiller. –

İlgili konular