Example #1
0
int CTargetWnd::GetText(CStringW& str) const
{
	if (IsUnicodeSystem())
	{
		int len=(int)::SendMessageW(m_hWnd,WM_GETTEXTLENGTH,0,0)+2;
		LPWSTR text=new WCHAR[len];
		if (text==NULL)
		{
			SetHFCError(HFC_CANNOTALLOC);
			return FALSE;
		}
		len=(int)::SendMessageW(m_hWnd,WM_GETTEXT,(WPARAM)len,(LPARAM)text);
		str.Copy(text,len);
		delete[] text;
		return len;
	}
	
	int len=(int)::SendMessage(m_hWnd,WM_GETTEXTLENGTH,0,0)+2;
	LPSTR text=new CHAR[len];
	if (text==NULL)
	{
		SetHFCError(HFC_CANNOTALLOC);
		return FALSE;
	}
	len=(int)::SendMessageA(m_hWnd,WM_GETTEXT,(WPARAM)len,(LPARAM)text); 
	str.Copy(text,len);
	delete[] text;
	return len;
}
Example #2
0
void ShellFunctions::StrRetToStr(STRRET& strret,LPITEMIDLIST lpiil,CStringW& sString)
{
	switch (strret.uType)
	{
	case STRRET_OFFSET:
		sString.Copy((LPSTR)((LPBYTE)lpiil+strret.uOffset));
		break;
	case STRRET_CSTR:
		sString.Copy(strret.cStr);
		break;
	case STRRET_WSTR:
		sString.Copy(strret.pOleStr);
		CoTaskMemFree(strret.pOleStr);
		break;
	}	
}
Example #3
0
BOOL ShellFunctions::RunRegistryCommand(HKEY hKey,LPCWSTR szFile)
{
	if (!IsUnicodeSystem())
		return RunRegistryCommand(hKey,W2A(szFile));


	PROCESS_INFORMATION pi;
	STARTUPINFOW si;
	CRegKey CommandKey;
	CStringW ExecuteStr;
	CStringW CommandLine;
	int i;

	if (CommandKey.OpenKey(hKey,"command",CRegKey::openExist|CRegKey::samAll)!=ERROR_SUCCESS)
		return FALSE;
	if (CommandKey.QueryValue(L"",ExecuteStr)<2)
		return FALSE;
	i=ExecuteStr.FindFirst(L'%');
	while (i!=-1)
	{
		if (ExecuteStr[i+1]==L'1')
		{
			CommandLine.Copy(ExecuteStr,i);
			CommandLine<<szFile;
			CommandLine<<((LPCWSTR)ExecuteStr+i+2);
			break;
		}
		i=ExecuteStr.FindNext(L'%',i);
	}
	if (i==-1)
		CommandLine=ExecuteStr;
	if (!ExpandEnvironmentStringsW(CommandLine,ExecuteStr.GetBuffer(1000),1000))
		ExecuteStr.Swap(CommandLine);
	si.cb=sizeof(STARTUPINFOW);
	si.lpReserved=NULL;
	si.cbReserved2=0;
	si.lpReserved2=NULL;
	si.lpDesktop=NULL;
	si.lpTitle=NULL;
	si.dwFlags=STARTF_USESHOWWINDOW;
	si.wShowWindow=SW_SHOWDEFAULT;
	if (!CreateProcessW(NULL,ExecuteStr.GetBuffer(),NULL,
		NULL,FALSE,CREATE_DEFAULT_ERROR_MODE|NORMAL_PRIORITY_CLASS,
		NULL,NULL,&si,&pi))
	{
		CommandKey.CloseKey();
		return FALSE;
	}
	CloseHandle(pi.hThread);
	CloseHandle(pi.hProcess);
	CommandKey.CloseKey();
	return TRUE;
}
Example #4
0
UINT CWnd::GetDlgItemText(int nIDDlgItem,CStringW& str)
{
	HWND hCtrl=::GetDlgItem(m_hWnd,nIDDlgItem);
	UINT len=(UINT)::SendMessage(hCtrl,WM_GETTEXTLENGTH,0,0);
	
	if (IsUnicodeSystem())
		return ::GetWindowTextW(hCtrl,str.GetBuffer(len),len+1);


	char* pText=new char[len+2];
	::GetWindowTextA(hCtrl,pText,len+1);
	str.Copy(pText,len);
	delete[] pText;
	return len;
}
Example #5
0
int CWnd::GetWindowText(CStringW& str) const
{
	if (IsUnicodeSystem())
	{
		int len=::GetWindowTextLengthW(m_hWnd);
		len=::GetWindowTextW(m_hWnd,str.GetBuffer(len),len+1);
		return len;
	}

	int len=::GetWindowTextLength(m_hWnd);
	char* pText=new char[len+2];
	::GetWindowTextA(m_hWnd,pText,len+1);
	str.Copy(pText,len);
	delete[] pText;
	return len;	
}
int CStatusBarCtrl::GetText(CStringW& str,int nPane,int* pType) const
{
	int ret;
	int len=(int)::SendMessage(m_hWnd,SB_GETTEXTLENGTH,(WPARAM)nPane,0);
	
	if (IsUnicodeSystem())
		ret=(int)::SendMessageW(m_hWnd,SB_GETTEXTW,(WPARAM)nPane,(LPARAM)str.GetBuffer(len));
	else
	{
		char* pText=new char[len+2];
		ret=(int)::SendMessageA(m_hWnd,SB_GETTEXTA,(WPARAM)nPane,(LPARAM)pText);
		str.Copy(pText,len);
		delete[] pText;
	}

	if (pType!=NULL)
		*pType=HIWORD(ret);
	return ret;
}