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

Last change on this file since 625 was 625, checked in by dai_9181, 15 years ago

・WindowInfoクラスをリファクタリング
・MdiInfoを単純配列からvectorに変更した。

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( const std::string &filepath )
200{
201    //拡張子を識別し、タブの色を決定
202    char szExt[255],*lpszTemp;
203    _splitpath(filepath.c_str(),NULL,NULL,NULL,szExt);
204    if(szExt[0]=='.') lpszTemp=szExt+1;
205    else lpszTemp=szExt;
206    for(int i=0;i<iExtItemNum;i++){
207        if(lstrcmpi(lpszTemp,ppobj_ExtItems[i]->m_szExtension)==0){
208            return ppobj_ExtItems[i]->TabColor;
209        }
210    }
211    return TABCOLOR_GRAY;
212}
213
214
215BOOL CALLBACK DlgFileLinkAdd(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
216    static COneExt *pobj_OneExt;
217
218    static int TabColor;
219    switch(message){
220        case WM_INITDIALOG:
221            if(lParam){
222                pobj_OneExt=(COneExt *)lParam;
223
224                SetDlgItemText(hwnd,IDC_EXTENSION,pobj_OneExt->m_szExtension);
225                SetDlgItemText(hwnd,IDC_NOTE,pobj_OneExt->m_szNote);
226                TabColor=pobj_OneExt->TabColor;
227
228                if(pobj_OneExt->m_bWindowsSearch)
229                    SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_SETCHECK,BST_CHECKED,0);
230                else
231                    SendDlgItemMessage(hwnd,IDC_SEARCH_OFF,BM_SETCHECK,BST_CHECKED,0);
232
233                EnableWindow(GetDlgItem(hwnd,IDC_EXTENSION),0);
234
235                SetFocus(GetDlgItem(hwnd,IDC_NOTE));
236            }
237            else{
238                pobj_OneExt=0;
239                TabColor=TABCOLOR_GRAY;
240
241                SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_SETCHECK,BST_CHECKED,0);
242
243                SetFocus(GetDlgItem(hwnd,IDC_EXTENSION));
244            }
245
246            SendMessage(hwnd,WM_COMMAND,IDC_EXTENSION,0);
247
248            break;
249        case WM_DRAWITEM:
250            LPDRAWITEMSTRUCT pds;
251            pds=(LPDRAWITEMSTRUCT)lParam;
252
253            HBRUSH hBrush,hOldBrush;
254
255            if(wParam==IDC_COLOR_BUTTON){
256                //////////////
257                // 色を描画
258                //////////////
259
260                //ペンとブラシを生成
261                HPEN hPen,hOldPen;
262                hPen=(HPEN)GetStockObject(WHITE_PEN);
263                hBrush=CreateSolidBrush(TabColor);
264
265                //塗りつぶす
266                hOldPen=(HPEN)SelectObject(pds->hDC,hPen);
267                hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
268                Rectangle(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom);
269                SelectObject(pds->hDC,hOldPen);
270                SelectObject(pds->hDC,hOldBrush);
271
272                //ブラシを破棄
273                DeleteObject(hBrush);
274            }
275            return 1;
276        case WM_COMMAND:
277            switch(LOWORD(wParam)){
278                case IDOK:
279                    char szExtension[64];
280                    GetDlgItemText(hwnd,IDC_EXTENSION,szExtension,64);
281
282                    char szNote[255];
283                    GetDlgItemText(hwnd,IDC_NOTE,szNote,255);
284
285                    BOOL bWindowsSearch;
286                    if(SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_GETCHECK,0,0))
287                        bWindowsSearch=1;
288                    else bWindowsSearch=0;
289
290                    if(pobj_OneExt){
291                        //変更
292                        lstrcpy(pobj_OneExt->m_szNote,szNote);
293                        pobj_OneExt->m_bWindowsSearch=bWindowsSearch;
294                        pobj_OneExt->TabColor=TabColor;
295                    }
296                    else{
297                        //追加
298                        if(!pobj_nv->pobj_ExtLink->add(1,szExtension,szNote,bWindowsSearch,TabColor)){
299                            char temporary[255];
300                            sprintf(temporary,"拡張子 %s は既にリストに存在します。",szExtension);
301                            MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OK|MB_ICONEXCLAMATION);
302
303                            return 1;
304                        }
305                    }
306
307                    EndDialog(hwnd,1);
308                    return 1;
309                case IDCANCEL:
310                    EndDialog(hwnd,0);
311                    return 1;
312                case IDC_COLOR_BUTTON:
313                    POINT pos;
314                    GetCursorPos(&pos);
315                    extern HMENU hTabColorMenu;
316                    TrackPopupMenu(hTabColorMenu,TPM_LEFTALIGN,pos.x,pos.y,0,hwnd,0);
317                    return 1;
318
319                case IDC_EXTENSION:
320                    if(GetWindowTextLength(GetDlgItem(hwnd,IDC_EXTENSION)))
321                        EnableWindow(GetDlgItem(hwnd,IDOK),1);
322                    else
323                        EnableWindow(GetDlgItem(hwnd,IDOK),0);
324                    return 1;
325
326                case IDM_USER_COLOR:
327                    COLORREF colorUser;
328                    colorUser=TabColor;
329                    {
330                        CHOOSECOLOR cc;
331                        COLORREF CusColors[16]={
332                            RGB(255,255,255),
333                            RGB(0,0,0),
334                            RGB(128,128,128),
335                            RGB(192,192,192),
336                            RGB(128,0,0),
337                            RGB(255,0,0),
338                            RGB(128,128,0),
339                            RGB(255,255,0),
340                            RGB(0,128,0),
341                            RGB(0,255,0),
342                            RGB(0,128,128),
343                            RGB(0,255,255),
344                            RGB(0,0,128),
345                            RGB(0,0,255),
346                            RGB(128,0,128),
347                            RGB(255,0,255)};
348                        cc.lStructSize=sizeof(CHOOSECOLOR);
349                        cc.hwndOwner=hwnd;
350                        cc.rgbResult=colorUser;
351                        cc.lpCustColors=CusColors;
352                        cc.Flags=CC_RGBINIT|CC_FULLOPEN;
353                        if(!ChooseColor(&cc)){
354                            return 0;
355                        }
356                        colorUser=cc.rgbResult;
357                    }
358                case IDM_GRAY:
359                case IDM_WHITE:
360                case IDM_RED:
361                case IDM_GREEN:
362                case IDM_BLUE:
363                case IDM_YELLOW:
364                    if(LOWORD(wParam)==IDM_GRAY)    TabColor=TABCOLOR_GRAY;
365                    if(LOWORD(wParam)==IDM_WHITE)   TabColor=TABCOLOR_WHITE;
366                    if(LOWORD(wParam)==IDM_RED)     TabColor=TABCOLOR_RED;
367                    if(LOWORD(wParam)==IDM_GREEN)   TabColor=TABCOLOR_GREEN;
368                    if(LOWORD(wParam)==IDM_BLUE)    TabColor=TABCOLOR_BLUE;
369                    if(LOWORD(wParam)==IDM_YELLOW)  TabColor=TABCOLOR_YELLOW;
370                    if(LOWORD(wParam)==IDM_USER_COLOR) TabColor=colorUser;
371                    InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
372                    return 1;
373            }
374            break;
375    }
376    return 0;
377}
378
379BOOL CALLBACK DlgLinkFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
380    int i;
381    HWND hListView;
382    char temporary[255];
383    switch(message){
384        case WM_INITDIALOG:
385            SetPosCenter(hwnd);
386
387
388
389            ///////////////////////////
390            // カラムの設定
391            ///////////////////////////
392
393            //拡張スタイル
394            DWORD dwStyle;
395            hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
396            dwStyle=ListView_GetExtendedListViewStyle(hListView);
397            dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES;
398            ListView_SetExtendedListViewStyle(hListView,dwStyle);
399
400            LV_COLUMN ListView_Column;
401            ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
402            ListView_Column.fmt=LVCFMT_LEFT;
403
404            ListView_Column.cx=50;
405            ListView_Column.pszText="拡張子";
406            ListView_Column.iSubItem=0;
407            ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
408
409            ListView_Column.cx=150;
410            ListView_Column.pszText="説明";
411            ListView_Column.iSubItem++;
412            ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
413
414            ListView_Column.cx=90;
415            ListView_Column.pszText="Windows検索";
416            ListView_Column.iSubItem++;
417            ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
418
419            ListView_Column.cx=80;
420            ListView_Column.pszText="タブの色";
421            ListView_Column.iSubItem++;
422            ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
423
424
425            pobj_nv->pobj_ExtLink->ResetListView(hListView);
426            break;
427        case WM_COMMAND:
428            switch(LOWORD(wParam)){
429                case IDC_ADD_BUTTON:
430                    if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_ADD),hwnd,(DLGPROC)DlgFileLinkAdd,0)) return 1;
431
432                    pobj_nv->pobj_ExtLink->ResetListView(GetDlgItem(hwnd,IDC_EXTENSION_LIST));
433
434                    return 1;
435                case IDC_EDIT_BUTTON:
436                    hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
437
438                    for(i=0;i<ListView_GetItemCount(hListView);i++){
439                        if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
440                            break;
441                        }
442                    }
443                    if(i==ListView_GetItemCount(hListView)) return 1;
444
445                    if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_ADD),hwnd,(DLGPROC)DlgFileLinkAdd,(LPARAM)pobj_nv->pobj_ExtLink->ppobj_ExtItems[i])) return 1;
446
447                    pobj_nv->pobj_ExtLink->ResetListView(GetDlgItem(hwnd,IDC_EXTENSION_LIST));
448
449                    return 1;
450                case IDC_DELETE_BUTTON:
451                    hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
452
453                    for(i=0;i<ListView_GetItemCount(hListView);i++){
454                        if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
455                            ListView_GetItemText(hListView,i,0,temporary,255);
456
457                            char temp2[255];
458                            sprintf(temp2,"%s をリストから削除します。",temporary);
459                            if(MessageBox(hwnd,temp2,APPLICATION_NAME,MB_OKCANCEL)==IDCANCEL) return 1;
460
461                            ListView_DeleteItem(hListView,i);
462
463                            pobj_nv->pobj_ExtLink->del(temporary);
464                            break;
465                        }
466                    }
467                    return 1;
468                case IDOK:
469                    hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
470
471                    for(i=0;i<ListView_GetItemCount(hListView);i++){
472                        pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg=ListView_GetCheckState(hListView,i);
473                    }
474
475                    if(MessageBox(hwnd,"指定された内容で拡張子に関するレジストリキーを登録します。よろしいですか?",APPLICATION_NAME,MB_YESNO)==IDNO)
476                        return 1;
477
478                    EndDialog(hwnd,1);
479                    return 1;
480                case IDCANCEL:
481                    hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
482
483                    for(i=0;i<ListView_GetItemCount(hListView);i++){
484                        pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg=ListView_GetCheckState(hListView,i);
485                    }
486                    EndDialog(hwnd,0);
487                    return 1;
488            }
489            break;
490        case WM_NOTIFY:
491            hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
492
493            NMHDR *hdr;
494            hdr=(NMHDR *)lParam;
495            if(hdr->hwndFrom==hListView&&hdr->code==NM_DBLCLK){
496                SendMessage(hwnd,WM_COMMAND,IDC_EDIT_BUTTON,0);
497            }
498            break;
499    }
500    return 0;
501}
502
503HKEY ClassRoot_CreateKey(char *path,char *lpszData){
504    HKEY hKey;
505    RegCreateKeyEx(HKEY_CLASSES_ROOT,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
506    RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)lpszData,lstrlen(lpszData));
507    return hKey;
508}
509void ExtensionLink(HWND hwnd){
510    int i;
511    HKEY hKey;
512
513    //初期状態の重複起動で関連付けを作動しないようにする
514    pobj_nv->save();
515
516    if(DialogBox(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_LINK),hwnd,(DLGPROC)DlgLinkFile)==0) return;
517
518    char szApplicationPath[MAX_PATH];
519    GetModuleFileName(hInst,szApplicationPath,MAX_PATH);
520
521    char temporary[MAX_PATH],temp2[255],temp3[255];
522    for(i=0;i<pobj_nv->pobj_ExtLink->iExtItemNum;i++){
523        if(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg==0) continue;
524
525        //「.拡張子」キー
526        sprintf(temp2,".%s",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
527        sprintf(temp3,"%sfile",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
528        hKey=ClassRoot_CreateKey(temp2,temp3);
529
530        sprintf(temp2,"text/plain",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
531        RegSetValueEx(hKey,"Content Type",0,REG_SZ,(const unsigned char *)temp2,lstrlen(temp2));
532
533        RegCloseKey(hKey);
534
535
536        if(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bWindowsSearch){
537            //検索対象に含める
538            sprintf(temporary,".%s\\PersistentHandler",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
539            hKey=ClassRoot_CreateKey(temporary,"{5e941d80-bf96-11cd-b579-08002b30bfeb}");
540            RegCloseKey(hKey);
541        }
542        else{
543            //検索対象に含めない
544            sprintf(temporary,".%s\\PersistentHandler",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
545            RegDeleteKey(HKEY_CLASSES_ROOT,temporary);
546        }
547
548
549        //説明
550        RegCreateKeyEx(HKEY_CLASSES_ROOT,temp3,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
551        RegSetValueEx(hKey,NULL,0,REG_SZ,
552            (const unsigned char *)pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szNote,
553            lstrlen(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szNote));
554        RegCloseKey(hKey);
555
556
557        //アプリケーションパス
558        sprintf(temporary,"\"%s\" \"%%1\"",szApplicationPath);
559        sprintf(temp2,"%s\\shell\\open\\command",temp3);
560        RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
561        RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
562        RegCloseKey(hKey);
563
564
565#ifndef THETEXT
566        /////////////////////
567        // アイコン設定
568        // ※ProjectEditorのみ
569        /////////////////////
570
571        sprintf(temp2,"%s\\DefaultIcon",temp3);
572        if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"bas")==0){
573            sprintf(temporary,"\"%s\",8",szApplicationPath);
574            RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
575            RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
576            RegCloseKey(hKey);
577        }
578        if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"ab")==0||
579            lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"abp")==0){
580            sprintf(temporary,"\"%s\",8",szApplicationPath);
581            RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
582            RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
583            RegCloseKey(hKey);
584        }
585        if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"sbp")==0){
586            sprintf(temporary,"\"%s\",9",szApplicationPath);
587            RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
588            RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
589            RegCloseKey(hKey);
590        }
591        if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"pj")==0){
592            sprintf(temporary,"\"%s\",7",szApplicationPath);
593            RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
594            RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
595            RegCloseKey(hKey);
596        }
597#endif
598    }
599
600    //アイコンの関連付けを瞬時に反映させる
601    SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL );
602}
Note: See TracBrowser for help on using the repository browser.