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

Last change on this file was 829, checked in by イグトランス (egtra), 12 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

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