INT_PTR TestPlugin(WPARAM wParam, LPARAM lParam) { char temp[MAX_PATH]; const int MAX = 20; int i; HANDLE handles[MAX][2]; /* FOLDERSDATA caca; caca.cbSize = sizeof(caca); caca.szFormat = FOLDER_LOGS;*/ char *section; for (i = 0; i < MAX; i++) { switch (i % 4) { case 0: section = "Section 1"; break; case 1: section = "Section 2"; break; case 2: section = "Yet another section"; break; case 3: section = "Section no 4"; break; default: section = "Uhh ohh"; break; } //strcpy(caca.szSection, section); _itoa(i, temp, 10); //strcpy(caca.szName, temp); handles[i][0] = FoldersRegisterCustomPath(section, temp, FOLDER_LOGS); //CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &caca); } //caca.szFormatW = L"%profile_path%\\%current_profile%\\Ø"; //caca.flags = FF_UNICODE; FoldersRegisterCustomPath("Unicode stuff", "non unicode", " %profile_path%\\%current_profile%\\Ø\\\\\\"); for (i = 0; i < MAX; i++) { //strcpy(caca.szSection, "Unicode stuff"); sprintf(temp, "Value %d", i); //strcpy(caca.szName, temp); handles[i][1] = FoldersRegisterCustomPathW("Unicode stuff", temp, L"%profile_path%\\%current_profile%\\\u1FA6"); //CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &caca); } /* FOLDERSAPPENDDATA data; data.hRegisteredPath = handles[0]; data.szAppendData = "just an appended string"; char *cacat; CallService(MS_FOLDERS_GET_PATH_ALLOC_APPEND, (WPARAM) &data, (LPARAM) &cacat); Log("Append function returned : %s", cacat); */ /*FOLDERSGETDATA data = {0}; data.cbSize = sizeof(data); data.nMaxPathSize = sizeof(temp); data.szPath = temp; */ for (i = 0; i < MAX; i++) { //CallService(MS_FOLDERS_GET_PATH, handles[i][0], (LPARAM) &data); FoldersGetCustomPath((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>"); Log("Path function[%d] returned : %s", i, temp); } wchar_t buffer[MAX_PATH]; //data.szPathW = buffer; for (i = 0; i < MAX; i++) { //CallService(MS_FOLDERS_GET_PATH, handles[i][0], (LPARAM) &data); FoldersGetCustomPathW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>"); Log("Unicode path function[%d] returned: %S", i, buffer); } // GetPathService(CONFIGURATION_PATH, (LPARAM) temp); // GetPathAllocService(AVATARS_PATH, (LPARAM) &caca); for (i = 0; i < MAX; i++) { FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", "test"); Log("Path function Ex (test) [%d] returned : %s", i, temp); FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", ""); Log("Path function Ex () [%d] returned : %s", i, temp); FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", NULL); Log("Path function Ex (NULL) [%d] returned : %s", i, temp); } for (i = 0; i < MAX; i++) { FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", L"test"); Log("Unicode path function Ex (test) [%d] returned : %S", i, buffer); FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", L""); Log("Unicode path function Ex () [%d] returned : %S", i, buffer); FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", NULL); Log("Unicode path function Ex (NULL) [%d] returned : %S", i, buffer); } return 0; }
static BOOL CALLBACK DlgProcOptsGlobal(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { //CNetwork* network=(CNetwork*)GetWindowLong(GetParent(hwndDlg),GWL_USERDATA); switch (msg) { case WM_INITDIALOG: // Options dialog is being initialized { int nTemp; char szTemp[MAX_PATH]; DBVARIANT dbv; HANDLE hContact=NULL; LPSTR m_szModuleName=g_dllname; TranslateDialogDefault(hwndDlg); CheckDlgButton(hwndDlg, IDC_GLOBAL_DISABLEQUN, DBGetContactSettingByte(NULL,m_szModuleName,QQ_DISABLEHTTPD,0)); CheckDlgButton(hwndDlg, IDC_GLOBAL_WSNONLOCAL, DBGetContactSettingByte(NULL,m_szModuleName,QQ_HTTPDALLOWEXTERNAL,0)); CheckDlgButton(hwndDlg, IDC_NOREMOVEQUNIMAGE, DBGetContactSettingByte(NULL,m_szModuleName,QQ_NOREMOVEQUNIMAGE,0)); nTemp=READC_W2(QQ_HTTPDPORT); itoa(nTemp?nTemp:170,szTemp,10); SetDlgItemTextA(hwndDlg,IDC_GLOBAL_WSPORT,szTemp); if (CNetwork::m_folders[1]) { WCHAR szTemp[MAX_PATH]; FoldersGetCustomPathW(CNetwork::m_folders[1],szTemp,MAX_PATH,L"QQ\\WebServer"); SetDlgItemText(hwndDlg,IDC_GLOBAL_WSROOT,szTemp); EnableWindow(GetDlgItem(hwndDlg,IDC_GLOBAL_WSROOT),FALSE); EnableWindow(GetDlgItem(hwndDlg,IDC_GLOBAL_WSBROWSE),FALSE); } else { if (!READC_TS2(QQ_HTTPDROOT,&dbv) && *dbv.pszVal) { SetDlgItemText(hwndDlg,IDC_GLOBAL_WSROOT,dbv.ptszVal); DBFreeVariant(&dbv); } else SetDlgItemText(hwndDlg,IDC_GLOBAL_WSROOT,TranslateT("<Default>")); } return TRUE; } case WM_COMMAND: // When a control is toggled switch (LOWORD(wParam)) { case IDC_GLOBAL_WSPORT: case IDC_GLOBAL_WSROOT: if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) return 0; break; case IDC_GLOBAL_WSBROWSE: { BROWSEINFO binfo; LPITEMIDLIST idlist; WCHAR szTemp[MAX_PATH]; GetDlgItemText(hwndDlg, IDC_GLOBAL_WSROOT, szTemp, MAX_PATH); binfo.hwndOwner=hwndDlg; binfo.pidlRoot=NULL; binfo.pszDisplayName=szTemp; binfo.lpszTitle=TranslateT("Select Document Root"); binfo.ulFlags=BIF_RETURNONLYFSDIRS; binfo.lpfn=&BrowseCallbackProc; //コールバック関数を指定する binfo.lParam=(LPARAM)szTemp; //コールバックに渡す引数 binfo.iImage=(int)NULL; idlist=SHBrowseForFolder(&binfo); SHGetPathFromIDList(idlist,szTemp); //ITEMIDLISTからパスを得る CoTaskMemFree(idlist); //ITEMIDLISTの解放 99/11/03訂正 SetDlgItemText(hwndDlg, IDC_GLOBAL_WSROOT, szTemp); SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); } return true; } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: // When a notify is sent by Options Dialog (Property Sheet) switch (((LPNMHDR)lParam)->code) case PSN_APPLY: // Apply Settings/ネキ。ヲノ靹テ { int reconnectRequired=0; HANDLE hContact=NULL; LPSTR m_szModuleName=g_dllname; union { WCHAR wszTemp[MAX_PATH]; CHAR szTemp[MAX_PATH*2]; }; DBVARIANT dbv; int nTemp; if (DBGetContactSettingByte(NULL,m_szModuleName,QQ_DISABLEHTTPD,0)!=IsDlgButtonChecked(hwndDlg,IDC_GLOBAL_DISABLEQUN)) reconnectRequired=1; DBWriteContactSettingByte(NULL,m_szModuleName,QQ_DISABLEHTTPD,(BYTE)IsDlgButtonChecked(hwndDlg,IDC_GLOBAL_DISABLEQUN)); DBWriteContactSettingByte(NULL,m_szModuleName,QQ_HTTPDALLOWEXTERNAL,(BYTE)IsDlgButtonChecked(hwndDlg,IDC_GLOBAL_WSNONLOCAL)); DBWriteContactSettingByte(NULL,m_szModuleName,QQ_NOREMOVEQUNIMAGE,(BYTE)IsDlgButtonChecked(hwndDlg,IDC_NOREMOVEQUNIMAGE)); GetDlgItemTextA(hwndDlg,IDC_GLOBAL_WSPORT,szTemp,MAX_PATH); nTemp=atoi(szTemp); if (nTemp==0) DELC(QQ_HTTPDPORT); else if (nTemp!=0 && nTemp!=READC_W2(QQ_HTTPDPORT)) { reconnectRequired=1; WRITEC_W(QQ_HTTPDPORT,nTemp); } if (!CNetwork::m_folders[1]) { GetDlgItemText(hwndDlg,IDC_GLOBAL_WSROOT,wszTemp,MAX_PATH); if (*wszTemp!=0 && !wcschr(wszTemp,'<') && !wcschr(wszTemp,'>')) { dbv.ptszVal=NULL; if (READC_TS2(QQ_HTTPDROOT,&dbv) || wcscmp(dbv.ptszVal,wszTemp)) { reconnectRequired=1; WRITEC_TS(QQ_HTTPDROOT,wszTemp); } if (dbv.ptszVal) DBFreeVariant(&dbv); } else DELC(QQ_HTTPDROOT); } // Apply Options if (reconnectRequired) MessageBox(hwndDlg,TranslateT("The changes you have made require you to restart Miranda IM before they take effect"),APPNAME,MB_OK); return TRUE; } break; case WM_DESTROY: hwndGlobal=hwndGlobalFor=0; break; } return FALSE; }