source: dev/trunk/ab5.0/abdev/abdev/ExtensionLink.cpp@ 481

Last change on this file since 481 was 475, checked in by dai_9181, 16 years ago

構成管理を変更中・・・(いったんコミット)

File size: 17.7 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5
6#ifndef ListView_SetCheckState
7 #define ListView_SetCheckState(hwndLV, i, fCheck) \
8 ListView_SetItemState(hwndLV, i, \
9 INDEXTOSTATEIMAGEMASK((fCheck)+1), LVIS_STATEIMAGEMASK)
10#endif
11
12
13
14COneExt::COneExt(BOOL bReg,char *lpszExtension,char *lpszNote,BOOL bWindowsSearch,COLORREF tab_color){
15 m_bReg=bReg;
16 lstrcpy(m_szExtension,lpszExtension);
17 lstrcpy(m_szNote,lpszNote);
18 m_bWindowsSearch=bWindowsSearch;
19 TabColor=tab_color;
20}
21COneExt::~COneExt(){
22}
23
24CExtLink::CExtLink(){
25 ppobj_ExtItems=(COneExt **)malloc(1);
26 iExtItemNum=0;
27}
28CExtLink::~CExtLink(){
29 int i;
30 for(i=0;i<iExtItemNum;i++){
31 delete ppobj_ExtItems[i];
32 }
33 free(ppobj_ExtItems);
34 ppobj_ExtItems=0;
35}
36
37void CExtLink::load(char *path){
38 char *buffer;
39 buffer=ReadBuffer_NonErrMsg(path);
40 if(buffer){
41 int i=0;
42 char temporary[64],temp2[255],temp3[64],temp4[64];
43 while(1){
44 //関連付けをおこなうかどうかのチェック
45 BOOL bReg;
46 i=GetOneParameter(buffer,i,temporary);
47 if(temporary[0]=='\0') break;
48 bReg=atoi(temporary);
49
50 //拡張子
51 i=GetOneParameter(buffer,i,temporary);
52 if(temporary[0]=='\0') break;
53
54 //説明
55 i=GetOneParameter(buffer,i,temp2);
56 if(temp2[0]=='\0') break;
57
58 //Windows検索
59 i=GetOneParameter(buffer,i,temp3);
60 if(temp3[0]=='\0') break;
61
62 //タブの色
63 i=GetOneParameter(buffer,i,temp4);
64 if(temp4[0]=='\0') break;
65
66 DWORD dwColor;
67 sscanf(temp4,"%x",&dwColor);
68
69 add(bReg,temporary,temp2,atoi(temp3),(COLORREF)dwColor);
70
71 if(buffer[i]=='\r'&&buffer[i+1]=='\n'){
72 i+=2;
73 }
74 else break;
75 }
76
77 HeapDefaultFree(buffer);
78 }
79 else{
80 //デフォルト値をセット
81 SetInitData();
82 }
83}
84void CExtLink::save(char *path){
85 int i;
86 char buffer[8192];
87 buffer[0]=0;
88 for(i=0;i<iExtItemNum;i++){
89 sprintf(buffer+lstrlen(buffer),"%d,%s,%s,%d,%x\r\n",
90 ppobj_ExtItems[i]->m_bReg,
91 ppobj_ExtItems[i]->m_szExtension,
92 ppobj_ExtItems[i]->m_szNote,
93 ppobj_ExtItems[i]->m_bWindowsSearch,
94 ppobj_ExtItems[i]->TabColor);
95 }
96
97 //保存
98 WriteBuffer(path,buffer,lstrlen(buffer));
99}
100
101BOOL CExtLink::add(BOOL bReg,char *lpszExtension,char *lpszNote,BOOL bWindowsSearch,COLORREF tab_color){
102 //重複チェック
103 int i;
104 for(i=0;i<iExtItemNum;i++){
105 if(lstrcmpi(ppobj_ExtItems[i]->m_szExtension,lpszExtension)==0){
106 return 0;
107 }
108 }
109
110 ppobj_ExtItems=(COneExt **)realloc(ppobj_ExtItems,(iExtItemNum+1)*sizeof(COneExt*));
111 ppobj_ExtItems[iExtItemNum]=new COneExt(bReg,lpszExtension,lpszNote,bWindowsSearch,tab_color);
112 iExtItemNum++;
113
114 return 1;
115}
116void CExtLink::del(char *lpszExtension){
117 int i;
118 for(i=0;i<iExtItemNum;i++){
119 if(lstrcmpi(lpszExtension,ppobj_ExtItems[i]->m_szExtension)==0)
120 break;
121 }
122 if(i==iExtItemNum) return;
123
124 delete ppobj_ExtItems[i];
125
126 iExtItemNum--;
127 for(;i<iExtItemNum;i++){
128 ppobj_ExtItems[i]=ppobj_ExtItems[i+1];
129 }
130}
131
132void CExtLink::SetInitData(void){
133 ///////////////////////////////////
134 // 初期立ち上げ時用の値をセット
135 ///////////////////////////////////
136
137#ifdef THETEXT
138 add(1,"txt","テキスト ドキュメント",1,TABCOLOR_GRAY);
139 add(0,"htm","HTML ドキュメント",1,TABCOLOR_BLUE);
140 add(0,"html","HTML ドキュメント",1,TABCOLOR_BLUE);
141 add(1,"cgi","CGI ドキュメント",1,TABCOLOR_GREEN);
142 add(1,"pl","Perl ドキュメント",1,TABCOLOR_GREEN);
143 add(1,"php","PHP ドキュメント",1,TABCOLOR_RED);
144 add(1,"tpl","テンプレート ドキュメント",1,TABCOLOR_YELLOW);
145#else
146 add(1,"ab","Basic ソースコード",1,TABCOLOR_BLUE);
147 add(1,"abp","Basic ソースコード",1,TABCOLOR_BLUE);
148 add(1,"bas","Basic ソースコード",1,TABCOLOR_BLUE);
149 add(1,"sbp","サブソースコード",1,TABCOLOR_GREEN);
150 add(1,"pj","ActiveBasic プロジェクト ドキュメント",0,TABCOLOR_GRAY);
151#endif
152}
153
154void CExtLink::ResetListView(HWND hListView){
155 ListView_DeleteAllItems(hListView);
156
157 int i;
158 for(i=0; i < pobj_nv->pobj_ExtLink->iExtItemNum; i++){
159 LV_ITEM item;
160
161 //拡張子
162 item.mask=LVIF_TEXT;
163 item.pszText=ppobj_ExtItems[i]->m_szExtension;
164 item.iItem=i;
165 item.iSubItem=0;
166 ListView_InsertItem(hListView,&item);
167
168 //説明
169 item.pszText=ppobj_ExtItems[i]->m_szNote;
170 item.iItem=i;
171 item.iSubItem++;
172 ListView_SetItem(hListView,&item);
173
174 //Windows検索
175 if(ppobj_ExtItems[i]->m_bWindowsSearch)
176 item.pszText="有効";
177 else item.pszText="無効";
178 item.iItem=i;
179 item.iSubItem++;
180 ListView_SetItem(hListView,&item);
181
182 //タブの色
183 if(ppobj_ExtItems[i]->TabColor==TABCOLOR_GRAY) item.pszText="灰色";
184 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_WHITE) item.pszText="白";
185 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_RED) item.pszText="赤";
186 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_GREEN) item.pszText="緑";
187 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_BLUE) item.pszText="青";
188 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_YELLOW) item.pszText="黄色";
189 else item.pszText="ユーザー設定";
190 item.iItem=i;
191 item.iSubItem++;
192 ListView_SetItem(hListView,&item);
193
194 //チェックマーク
195 ListView_SetCheckState(hListView,i,ppobj_ExtItems[i]->m_bReg);
196 }
197}
198
199COLORREF CExtLink::GetTabColorFromFilePath(char *path){
200 //拡張子を識別し、タブの色を決定
201 char szExt[255],*lpszTemp;
202 _splitpath(path,NULL,NULL,NULL,szExt);
203 if(szExt[0]=='.') lpszTemp=szExt+1;
204 else lpszTemp=szExt;
205 for(int i=0;i<iExtItemNum;i++){
206 if(lstrcmpi(lpszTemp,ppobj_ExtItems[i]->m_szExtension)==0){
207 return ppobj_ExtItems[i]->TabColor;
208 }
209 }
210 return TABCOLOR_GRAY;
211}
212
213
214BOOL CALLBACK DlgFileLinkAdd(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
215 static COneExt *pobj_OneExt;
216
217 static int TabColor;
218 switch(message){
219 case WM_INITDIALOG:
220 if(lParam){
221 pobj_OneExt=(COneExt *)lParam;
222
223 SetDlgItemText(hwnd,IDC_EXTENSION,pobj_OneExt->m_szExtension);
224 SetDlgItemText(hwnd,IDC_NOTE,pobj_OneExt->m_szNote);
225 TabColor=pobj_OneExt->TabColor;
226
227 if(pobj_OneExt->m_bWindowsSearch)
228 SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_SETCHECK,BST_CHECKED,0);
229 else
230 SendDlgItemMessage(hwnd,IDC_SEARCH_OFF,BM_SETCHECK,BST_CHECKED,0);
231
232 EnableWindow(GetDlgItem(hwnd,IDC_EXTENSION),0);
233
234 SetFocus(GetDlgItem(hwnd,IDC_NOTE));
235 }
236 else{
237 pobj_OneExt=0;
238 TabColor=TABCOLOR_GRAY;
239
240 SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_SETCHECK,BST_CHECKED,0);
241
242 SetFocus(GetDlgItem(hwnd,IDC_EXTENSION));
243 }
244
245 SendMessage(hwnd,WM_COMMAND,IDC_EXTENSION,0);
246
247 break;
248 case WM_DRAWITEM:
249 LPDRAWITEMSTRUCT pds;
250 pds=(LPDRAWITEMSTRUCT)lParam;
251
252 HBRUSH hBrush,hOldBrush;
253
254 if(wParam==IDC_COLOR_BUTTON){
255 //////////////
256 // 色を描画
257 //////////////
258
259 //ペンとブラシを生成
260 HPEN hPen,hOldPen;
261 hPen=(HPEN)GetStockObject(WHITE_PEN);
262 hBrush=CreateSolidBrush(TabColor);
263
264 //塗りつぶす
265 hOldPen=(HPEN)SelectObject(pds->hDC,hPen);
266 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
267 Rectangle(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom);
268 SelectObject(pds->hDC,hOldPen);
269 SelectObject(pds->hDC,hOldBrush);
270
271 //ブラシを破棄
272 DeleteObject(hBrush);
273 }
274 return 1;
275 case WM_COMMAND:
276 switch(LOWORD(wParam)){
277 case IDOK:
278 char szExtension[64];
279 GetDlgItemText(hwnd,IDC_EXTENSION,szExtension,64);
280
281 char szNote[255];
282 GetDlgItemText(hwnd,IDC_NOTE,szNote,255);
283
284 BOOL bWindowsSearch;
285 if(SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_GETCHECK,0,0))
286 bWindowsSearch=1;
287 else bWindowsSearch=0;
288
289 if(pobj_OneExt){
290 //変更
291 lstrcpy(pobj_OneExt->m_szNote,szNote);
292 pobj_OneExt->m_bWindowsSearch=bWindowsSearch;
293 pobj_OneExt->TabColor=TabColor;
294 }
295 else{
296 //追加
297 if(!pobj_nv->pobj_ExtLink->add(1,szExtension,szNote,bWindowsSearch,TabColor)){
298 char temporary[255];
299 sprintf(temporary,"拡張子 %s は既にリストに存在します。",szExtension);
300 MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OK|MB_ICONEXCLAMATION);
301
302 return 1;
303 }
304 }
305
306 EndDialog(hwnd,1);
307 return 1;
308 case IDCANCEL:
309 EndDialog(hwnd,0);
310 return 1;
311 case IDC_COLOR_BUTTON:
312 POINT pos;
313 GetCursorPos(&pos);
314 extern HMENU hTabColorMenu;
315 TrackPopupMenu(hTabColorMenu,TPM_LEFTALIGN,pos.x,pos.y,0,hwnd,0);
316 return 1;
317
318 case IDC_EXTENSION:
319 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_EXTENSION)))
320 EnableWindow(GetDlgItem(hwnd,IDOK),1);
321 else
322 EnableWindow(GetDlgItem(hwnd,IDOK),0);
323 return 1;
324
325 case IDM_USER_COLOR:
326 COLORREF colorUser;
327 colorUser=TabColor;
328 {
329 CHOOSECOLOR cc;
330 COLORREF CusColors[16]={
331 RGB(255,255,255),
332 RGB(0,0,0),
333 RGB(128,128,128),
334 RGB(192,192,192),
335 RGB(128,0,0),
336 RGB(255,0,0),
337 RGB(128,128,0),
338 RGB(255,255,0),
339 RGB(0,128,0),
340 RGB(0,255,0),
341 RGB(0,128,128),
342 RGB(0,255,255),
343 RGB(0,0,128),
344 RGB(0,0,255),
345 RGB(128,0,128),
346 RGB(255,0,255)};
347 cc.lStructSize=sizeof(CHOOSECOLOR);
348 cc.hwndOwner=hwnd;
349 cc.rgbResult=colorUser;
350 cc.lpCustColors=CusColors;
351 cc.Flags=CC_RGBINIT|CC_FULLOPEN;
352 if(!ChooseColor(&cc)){
353 return 0;
354 }
355 colorUser=cc.rgbResult;
356 }
357 case IDM_GRAY:
358 case IDM_WHITE:
359 case IDM_RED:
360 case IDM_GREEN:
361 case IDM_BLUE:
362 case IDM_YELLOW:
363 if(LOWORD(wParam)==IDM_GRAY) TabColor=TABCOLOR_GRAY;
364 if(LOWORD(wParam)==IDM_WHITE) TabColor=TABCOLOR_WHITE;
365 if(LOWORD(wParam)==IDM_RED) TabColor=TABCOLOR_RED;
366 if(LOWORD(wParam)==IDM_GREEN) TabColor=TABCOLOR_GREEN;
367 if(LOWORD(wParam)==IDM_BLUE) TabColor=TABCOLOR_BLUE;
368 if(LOWORD(wParam)==IDM_YELLOW) TabColor=TABCOLOR_YELLOW;
369 if(LOWORD(wParam)==IDM_USER_COLOR) TabColor=colorUser;
370 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
371 return 1;
372 }
373 break;
374 }
375 return 0;
376}
377
378BOOL CALLBACK DlgLinkFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
379 int i;
380 HWND hListView;
381 char temporary[255];
382 switch(message){
383 case WM_INITDIALOG:
384 SetPosCenter(hwnd);
385
386
387
388 ///////////////////////////
389 // カラムの設定
390 ///////////////////////////
391
392 //拡張スタイル
393 DWORD dwStyle;
394 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
395 dwStyle=ListView_GetExtendedListViewStyle(hListView);
396 dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES;
397 ListView_SetExtendedListViewStyle(hListView,dwStyle);
398
399 LV_COLUMN ListView_Column;
400 ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
401 ListView_Column.fmt=LVCFMT_LEFT;
402
403 ListView_Column.cx=50;
404 ListView_Column.pszText="拡張子";
405 ListView_Column.iSubItem=0;
406 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
407
408 ListView_Column.cx=150;
409 ListView_Column.pszText="説明";
410 ListView_Column.iSubItem++;
411 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
412
413 ListView_Column.cx=90;
414 ListView_Column.pszText="Windows検索";
415 ListView_Column.iSubItem++;
416 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
417
418 ListView_Column.cx=80;
419 ListView_Column.pszText="タブの色";
420 ListView_Column.iSubItem++;
421 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
422
423
424 pobj_nv->pobj_ExtLink->ResetListView(hListView);
425 break;
426 case WM_COMMAND:
427 switch(LOWORD(wParam)){
428 case IDC_ADD_BUTTON:
429 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_ADD),hwnd,(DLGPROC)DlgFileLinkAdd,0)) return 1;
430
431 pobj_nv->pobj_ExtLink->ResetListView(GetDlgItem(hwnd,IDC_EXTENSION_LIST));
432
433 return 1;
434 case IDC_EDIT_BUTTON:
435 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
436
437 for(i=0;i<ListView_GetItemCount(hListView);i++){
438 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
439 break;
440 }
441 }
442 if(i==ListView_GetItemCount(hListView)) return 1;
443
444 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_ADD),hwnd,(DLGPROC)DlgFileLinkAdd,(LPARAM)pobj_nv->pobj_ExtLink->ppobj_ExtItems[i])) return 1;
445
446 pobj_nv->pobj_ExtLink->ResetListView(GetDlgItem(hwnd,IDC_EXTENSION_LIST));
447
448 return 1;
449 case IDC_DELETE_BUTTON:
450 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
451
452 for(i=0;i<ListView_GetItemCount(hListView);i++){
453 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
454 ListView_GetItemText(hListView,i,0,temporary,255);
455
456 char temp2[255];
457 sprintf(temp2,"%s をリストから削除します。",temporary);
458 if(MessageBox(hwnd,temp2,APPLICATION_NAME,MB_OKCANCEL)==IDCANCEL) return 1;
459
460 ListView_DeleteItem(hListView,i);
461
462 pobj_nv->pobj_ExtLink->del(temporary);
463 break;
464 }
465 }
466 return 1;
467 case IDOK:
468 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
469
470 for(i=0;i<ListView_GetItemCount(hListView);i++){
471 pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg=ListView_GetCheckState(hListView,i);
472 }
473
474 if(MessageBox(hwnd,"指定された内容で拡張子に関するレジストリキーを登録します。よろしいですか?",APPLICATION_NAME,MB_YESNO)==IDNO)
475 return 1;
476
477 EndDialog(hwnd,1);
478 return 1;
479 case IDCANCEL:
480 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
481
482 for(i=0;i<ListView_GetItemCount(hListView);i++){
483 pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg=ListView_GetCheckState(hListView,i);
484 }
485 EndDialog(hwnd,0);
486 return 1;
487 }
488 break;
489 case WM_NOTIFY:
490 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
491
492 NMHDR *hdr;
493 hdr=(NMHDR *)lParam;
494 if(hdr->hwndFrom==hListView&&hdr->code==NM_DBLCLK){
495 SendMessage(hwnd,WM_COMMAND,IDC_EDIT_BUTTON,0);
496 }
497 break;
498 }
499 return 0;
500}
501
502HKEY ClassRoot_CreateKey(char *path,char *lpszData){
503 HKEY hKey;
504 RegCreateKeyEx(HKEY_CLASSES_ROOT,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
505 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)lpszData,lstrlen(lpszData));
506 return hKey;
507}
508void ExtensionLink(HWND hwnd){
509 int i;
510 HKEY hKey;
511
512 //初期状態の重複起動で関連付けを作動しないようにする
513 pobj_nv->save();
514
515 if(DialogBox(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_LINK),hwnd,(DLGPROC)DlgLinkFile)==0) return;
516
517 char szApplicationPath[MAX_PATH];
518 GetModuleFileName(hInst,szApplicationPath,MAX_PATH);
519
520 char temporary[MAX_PATH],temp2[255],temp3[255];
521 for(i=0;i<pobj_nv->pobj_ExtLink->iExtItemNum;i++){
522 if(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg==0) continue;
523
524 //「.拡張子」キー
525 sprintf(temp2,".%s",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
526 sprintf(temp3,"%sfile",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
527 hKey=ClassRoot_CreateKey(temp2,temp3);
528
529 sprintf(temp2,"text/plain",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
530 RegSetValueEx(hKey,"Content Type",0,REG_SZ,(const unsigned char *)temp2,lstrlen(temp2));
531
532 RegCloseKey(hKey);
533
534
535 if(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bWindowsSearch){
536 //検索対象に含める
537 sprintf(temporary,".%s\\PersistentHandler",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
538 hKey=ClassRoot_CreateKey(temporary,"{5e941d80-bf96-11cd-b579-08002b30bfeb}");
539 RegCloseKey(hKey);
540 }
541 else{
542 //検索対象に含めない
543 sprintf(temporary,".%s\\PersistentHandler",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
544 RegDeleteKey(HKEY_CLASSES_ROOT,temporary);
545 }
546
547
548 //説明
549 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp3,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
550 RegSetValueEx(hKey,NULL,0,REG_SZ,
551 (const unsigned char *)pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szNote,
552 lstrlen(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szNote));
553 RegCloseKey(hKey);
554
555
556 //アプリケーションパス
557 sprintf(temporary,"\"%s\" \"%%1\"",szApplicationPath);
558 sprintf(temp2,"%s\\shell\\open\\command",temp3);
559 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
560 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
561 RegCloseKey(hKey);
562
563
564#ifndef THETEXT
565 /////////////////////
566 // アイコン設定
567 // ※ProjectEditorのみ
568 /////////////////////
569
570 sprintf(temp2,"%s\\DefaultIcon",temp3);
571 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"bas")==0){
572 sprintf(temporary,"\"%s\",8",szApplicationPath);
573 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
574 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
575 RegCloseKey(hKey);
576 }
577 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"ab")==0||
578 lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"abp")==0){
579 sprintf(temporary,"\"%s\",8",szApplicationPath);
580 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
581 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
582 RegCloseKey(hKey);
583 }
584 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"sbp")==0){
585 sprintf(temporary,"\"%s\",9",szApplicationPath);
586 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
587 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
588 RegCloseKey(hKey);
589 }
590 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"pj")==0){
591 sprintf(temporary,"\"%s\",7",szApplicationPath);
592 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
593 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
594 RegCloseKey(hKey);
595 }
596#endif
597 }
598
599 //アイコンの関連付けを瞬時に反映させる
600 SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL );
601}
Note: See TracBrowser for help on using the repository browser.