InstallSheild 獲取系統環境變量,如Desktop路徑等

  使用FOLDER_DESKTOP變量獲取的桌面路徑可能為:C:\Users\Public\Desktop

  而不是C:\Users\用戶\Desktop

  

  Copy and paste the following define statements at the beginning of your setup.rul file.

  Also, make sure you copy and paste the prototype for the SHGetFolderPathA() Windows API.

  This Windows API retrieves the path to the locations you want.  

setup.rul??Code?
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
?
//?Define?Microsoft?CSIDL?constants
//定義環境變量的ID,更詳細參見shlobj.h
//參見msdn?KNOWNFOLDERID
//http://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs.85).aspx
#define?CSIDL_DESKTOP???????????????????0x0000????????//?<desktop>
#define?CSIDL_INTERNET??????????????????0x0001????????//?Internet?Explorer?(icon?on?desktop)
#define?CSIDL_PROGRAMS??????????????????0x0002????????//?Start?Menu\Programs
#define?CSIDL_CONTROLS??????????????????0x0003????????//?My?Computer\Control?Panel
#define?CSIDL_PRINTERS??????????????????0x0004????????//?My?Computer\Printers
#define?CSIDL_PERSONAL??????????????????0x0005????????//?My?Documents
#define?CSIDL_FAVORITES?????????????????0x0006????????//?<user?name>\Favorites
#define?CSIDL_STARTUP???????????????????0x0007????????//?Start?Menu\Programs\Startup
#define?CSIDL_RECENT????????????????????0x0008????????//?<user?name>\Recent
#define?CSIDL_SENDTO????????????????????0x0009????????//?<user?name>\SendTo
#define?CSIDL_BITBUCKET?????????????????0x000a????????//?<desktop>\Recycle?Bin
#define?CSIDL_STARTMENU?????????????????0x000b????????//?<user?name>\Start?Menu
#define?CSIDL_MYDOCUMENTS???????????????CSIDL_PERSONAL?//??Personal?was?just?a?silly?name?for?My?Documents
#define?CSIDL_MYMUSIC???????????????????0x000d????????//?"My?Music"?folder
#define?CSIDL_MYVIDEO???????????????????0x000e????????//?"My?Videos"?folder
#define?CSIDL_DESKTOPDIRECTORY??????????0x0010????????//?<user?name>\Desktop
#define?CSIDL_DRIVES????????????????????0x0011????????//?My?Computer
#define?CSIDL_NETWORK???????????????????0x0012????????//?Network?Neighborhood?(My?Network?Places)
#define?CSIDL_NETHOOD???????????????????0x0013????????//?<user?name>\nethood
#define?CSIDL_FONTS?????????????????????0x0014????????//?windows\fonts
#define?CSIDL_TEMPLATES?????????????????0x0015
#define?CSIDL_COMMON_STARTMENU??????????0x0016????????//?All?Users\Start?Menu
#define?CSIDL_COMMON_PROGRAMS???????????0X0017????????//?All?Users\Start?Menu\Programs
#define?CSIDL_COMMON_STARTUP????????????0x0018????????//?All?Users\Startup
#define?CSIDL_COMMON_DESKTOPDIRECTORY???0x0019????????//?All?Users\Desktop
#define?CSIDL_APPDATA???????????????????0x001a????????//?<user?name>\Application?Data
#define?CSIDL_PRINTHOOD?????????????????0x001b????????//?<user?name>\PrintHood
//?Prototype?SHGetFolderPathA?in?SHFolder.dll
//加載SHFolder.dll,這樣就可以使用SHGetFolderPathA()了
prototype?NUMBER?SHFolder.SHGetFolderPathA(HWND,?NUMBER,?NUMBER,?NUMBER,?BYREF?STRING);


 The following example code shows you how to call the above win api function.
setup.rul??Code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
?
function?OnBegin()
????number?nFolderCSIDL;? ? ??//?CSIDL?value?you?want?to?use
????string?szPath;??????????  ? ??//?Will?contain?path?returned?from?API
????number?nResult;?????????  //?Return?value?from?API
begin
????
try
????????szPath?=?
"";
????????nFolderCSIDL?=?CSIDL_DESKTOP;
????????nResult?=?SHFolder.SHGetFolderPathA(
NULL,?nFolder,?NULL,?0,?szPath);
????
if?(nResult?=?0)?then
????????MessageBox(
"CSIDL_DESKTOP?=?"?+?szPath,?0);
????
else
????????SprintfBox(SEVERE,?
"CSIDL_DESKTOP",?"Failed(%d):?%s",?nResult,?FormatMessage(nResult));
????endif;
end;

轉載于:https://www.cnblogs.com/MakeView660/p/8807181.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線程2---異步1

在Java中什么是同步&#xff1f;什么是異步&#xff1f;對于這兩個概念我們必須要明確。只有明確這兩個概念&#xff0c;才會在明確在什么場景下使用同步以及異步。 在這里我可以形象的舉個例子來辨明這兩個概念&#xff1a; 1.同步與異步同步和異步關注的是消息通信機制 (sync…

mysql通常使用語句_Mysql 常用SQL語句集錦

基礎篇//查詢時間&#xff0c;友好提示$sql "select date_format(create_time, %Y-%m-%d) as day from table_name";//int 時間戳類型$sql "select from_unixtime(create_time, %Y-%m-%d) as day from table_name";//一個sql返回多個總數$sql "sel…

為什么你需要設計和維護一套自我移動標準?

在一個很長的調研日的休息時分&#xff0c;我在同一個客戶談一個項目&#xff0c;在這個項目中&#xff0c;我正為一個全球經濟公司開發一個iOS標準。他們的第一反應是這樣的&#xff1a;“什么&#xff1f;你在開發Apple iOS以外的標準&#xff1f;那還要開發什么&#xff1f;…

JS 小知識點匯總

1.offsetWidth & width A:因為. 1.offsetWidth是只讀屬性&#xff0c;而style.width是可讀寫得。2.offsetWidth返回的是一個整數&#xff0c;style.width返回的是一個字符串,并且帶有單位&#xff1b;**3.style.width只能返回以style方式定義的內部樣式的width屬性值。4.of…

django-redis中redis.conf配置詳細說明

參考文獻&#xff1a;https://blog.csdn.net/ljphilp/article/details/52934933 感謝樓主分享&#xff01;

初識Mysql(一)

1 搭建數據庫服務器2 MYSQL數據類型3 修改表結構1 搭建數據庫服務器1.1 存在mariadb時&#xff1a;#systemctl status mariadb#systemctl stop mariadb#rpm -e --nodeps mariadb-libs #不依賴關系卸載#rm -rf /etc/my.cnf#rm -rf /var/lib/mysql/*1.2 新安裝時[rootser51 ~]# …

數據挖掘資料

https://blog.csdn.net/baimafujinji/article/details/53269040 在2006年12月召開的 IEEE 數據挖掘國際會議上&#xff08;ICDM&#xff0c; International Conference on Data Mining&#xff09;&#xff0c;與會的各位專家選出了當時的十大數據挖掘算法&#xff08; top 10 …

如何進行個人知識管理和提高自己能力?

21世紀是一個知識爆炸的世紀&#xff0c;知識爆炸是指人類創造的知識,主要是自然科學知識,在短時期內以極高的速度增長起來。是人們對當前大量出現并飛速發展的各種知識現象所進行的夸張和描述。有人綜合計算,全世界的知識總量,七到十年翻一番。這就是風行全球的摩登名詞的意思…

redis服務器端和客戶端啟動

服務器端 sudo redis-server /etc/redis/redis.conf 指定加載的配置文件 ps -ef|grep redis 查看redis服務器進程 sudo kill -9 pid 殺死redis服務器 連接特定IP的redis&#xff1a;

hive表移到mysql_如何將Hive數據表移動到MySql?

我想知道如何將日期從Hive轉移到MySQL&#xff1f;我已經看到了如何將hive數據移動到Amazon DynamoDB而不是像MySQL這樣的RDBMS的示例.以下是我在DynamoDB中看到的示例&#xff1a;CREATE EXTERNAL TABLE tbl1 ( name string, location string )STORED BY org.apache.hadoop.hi…

賬簿與平衡段關聯表

gl_ledger_norm_seg_vals轉載于:https://www.cnblogs.com/lizicheng/p/8817982.html

超級丑數

題目&#xff1a; 寫一個程序來找第 n 個超級丑數。超級丑數的定義是正整數并且所有的質數因子都在所給定的一個大小為 k 的質數集合內。比如給你 4 個質數的集合 [2, 7, 13, 19], 那么 [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] 是前 12 個超級丑數。注意事項&#xff1a;…

為什么要進行個人知識管理(PKM)

21世紀是一個知識爆炸的世紀&#xff0c;知識爆炸是指人類創造的知識,主要是自然科學知識,在短時期內以極高的速度增長起來。是人們對當前大量出現并飛速發展的各種知識現象所進行的夸張和描述。有人綜合計算,全世界的知識總量,七到十年翻一番。這就是風行全球的摩登名詞的意思…

Python中“if __name__=='__main__':”理解與總結

具體詳解參考文獻&#xff1a;https://www.cnblogs.com/chenhuabin/p/10118199.html

python中列表如何比較大小_如何比較python中的列表/列表?

所以你想要兩個項目列表之間的區別。 first_list = [[Test.doc, 1a1a1a, 1111], [Test2.doc, 2b2b2b, 2222], [Test3.doc, 3c3c3c, 3333]] secnd_list = [[Test.doc, 1a1a1a, 1111], [Test2.doc, 2b2b2b, 2222], [Test3.doc, 8p8p8p, 9999], [Test4.doc, 4d4d4d, 4444]] 首先,…

NFC讀卡------ci522

1、NFC及卡片 NFC是近距離無線通訊技術&#xff0c;是一種非接觸式識別和互聯技術&#xff0c;可以在移動設備、消費類電子產品、PC和智能控件工具間進行近距離無線通信。NFC提供了一種簡單、觸控式的解決方案&#xff0c;可以讓消費者簡單直觀地交換信息、訪問內容與服務。 …

java基礎面試題:說說和的區別

&與&&都是邏輯與 不同的是&左右兩邊的判斷都要進行&#xff0c;而&&是短路與&#xff0c;當&&左邊條件為假則不用再判斷右邊條件&#xff0c;所以效率更高 例如&#xff0c;對于if(str ! null && !str.equals(“”))表達式&#xff0c…