#ifdef USE_UNICODE
// Unicode\82Å\93n\82·\8fê\8d\87
bool DdePoke( TDdeClientConv *dde, AnsiString Item, const wchar_t *Data );
+bool DdeRequest( TDdeClientConv *dde, AnsiString Item, char *Data, int &inoutDataLen );
#endif;
void GetGroupList(TMyIni &ini, TStringList &list);
hDll = NULL;
EnablePopup = true;
+#if 0
WindowsNT = false;
OSVERSIONINFO VersionInfo;
WindowsNT = true;
break;
}
+#endif
CheckWOW64();
BootUp = true;
Capturing = false;
DdeFreeDataHandle( hdata );
}
}
+ DdeFreeStringHandle(ddeMgr->DdeInstId, hszItem);
+ return r;
+}
+bool DdeRequest( TDdeClientConv *dde, AnsiString Item, char *Data, int &ioDataLen )
+{
+ const int ddeFmt = /*dde->DdeFmt*/CF_UNICODETEXT;
+ HSZ hszItem = DdeCreateStringHandle(ddeMgr->DdeInstId, Item.c_str(), CP_WINANSI );
+ if ( !hszItem ) return false;
+ bool r = false;
+ HDDEDATA hdata = DdeClientTransaction( NULL, 0, (HCONV)dde->Conv, hszItem, ddeFmt, XTYP_REQUEST, 10000, NULL);
+ if (hdata || DdeGetLastError(ddeMgr->DdeInstId) != DMLERR_NO_ERROR){
+ r = true;
+ if (hdata){
+ ioDataLen = DdeGetData(hdata, (LPBYTE)Data, ioDataLen, 0);
+ DdeFreeDataHandle( hdata );
+ } else {
+ Data[0] = '0';
+ ioDataLen = 0;
+ }
}
- DdeFreeStringHandle (ddeMgr->DdeInstId, hszItem);
+ DdeFreeStringHandle(ddeMgr->DdeInstId, hszItem);
return r;
}
#endif
dde->CloseLink();
delete dde;
}
+// XX.XX.XXXX (hex) 1+1+2 byte\8d\\90¬
+int TDCHookMainForm::GetPdicVersion()
+{
+ TDdeClientConv *PdicDde = OpenPdic("PDIC");
+ if (!PdicDde) return 0;
+ int version = 0;
+#ifdef USE_UNICODE
+ char buf[40];
+ int size = sizeof(buf);
+ if (DdeRequest(PdicDde, "GetVersion", buf, size)){
+ wchar_t *str = (wchar_t*)buf;
+ version = _wtoi( str ) << 24;
+ const wchar_t *p = wcschr( str, '.' );
+ if (p){
+ version |= _wtoi( p+1 ) << 16;
+ p = wcschr( p+1, '.' );
+ if (p){
+ version |= _wtoi( p+1 );
+ }
+ }
+ //DBW("version: %X", version);
+ }
+#endif
+ ClosePdic( PdicDde );
+ return version;
+}
// click_pos: mouse click\82³\82ê\82½text\8fã\82Ì\95¶\8e\9a\88Ê\92u(text\90æ\93ª\82©\82ç\82Ìoffset)
bool TDCHookMainForm::DoPopup( const tchar *text, int click_pos, const tchar *prevtext, bool movesend )
{
if (!msg.LParam)
return;
+ int pdicVer = GetPdicVersion();
+ const int numPrev = pdicVer >= 0x050A0018 ? 2 : 1; // ver.5.10.24\88È\8fã
+
tchar *text = (tchar*)msg.LParam;
int loc = msg.WParam & ~FLG_MOVESEND;
bool movesend = msg.WParam & FLG_MOVESEND ? true : false;
int start, end;
int prevstart;
- if ( !GetWord( text, loc, start, end, prevstart, true, 10, true, IgnoreJ ) ){
+ if ( !GetWord( text, loc, start, end, prevstart, true, 10, true, IgnoreJ, numPrev ) ){
// no words
delete[] text;
return;
cfg.ScaleX = Ini->ReadInteger(PFS_CONFIG, PFS_SCALE, 0);
}
cfg.ScaleY = cfg.ScaleX;
+ cfg.UseNumPrev = 1;
+ cfg.NumPrevWords = 2;
hDll->Config2(&cfg);
}
void TDCHookMainForm::SetupAMODI()