필요한분 쓰시기 바람
(MFC 코드를 WIN32 모드 DLL에서 쓰기위해
MFC 의 AfxParseUrl() 함수를 WIN32 SDK에 맞게 수정함)
http://durumul.com
krkim
BOOL MyParseUrl(LPCTSTR pstrURL, DWORD& dwServiceType,
LPSTR strServer, LPSTR strObject, int &nPort,
LPSTR strUsername, LPSTR strPassword, DWORD dwFlags = 0);
#include "shlwapi.h"
#include "wininet.h"
#pragma comment (lib,"shlwapi.lib")
#pragma comment (lib,"Wininet.lib")
BOOL _myparseurl(LPCTSTR pstrURL,
LPURL_COMPONENTS lpComponents, DWORD& dwServiceType,
int & nPort, DWORD dwFlags)
{
// this function will return bogus stuff if lpComponents
// isn't set up to copy the components
LPTSTR pstrCanonicalizedURL;
TCHAR szCanonicalizedURL[INTERNET_MAX_URL_LENGTH];
DWORD dwNeededLength = INTERNET_MAX_URL_LENGTH;
BOOL bRetVal;
BOOL bMustFree = FALSE;
// Decoding is done in InternetCrackUrl/UrlUnescape
// so we don't need the ICU_DECODE flag here.
DWORD dwCanonicalizeFlags = dwFlags & (ICU_NO_ENCODE ICU_NO_META ICU_ENCODE_SPACES_ONLY ICU_BROWSER_MODE);
DWORD dwCrackFlags = 0;
BOOL bUnescape = FALSE;
if((dwFlags & (ICU_ESCAPE ICU_DECODE)) && (lpComponents->dwUrlPathLength != 0) )
{
// We use only the ICU_ESCAPE flag for decoding even if
// ICU_DECODE is passed.
// Also, if ICU_BROWSER_MODE is passed we do the unescaping
// manually because InternetCrackUrl doesn't do
// Browser mode unescaping
if (dwFlags & ICU_BROWSER_MODE)
bUnescape = TRUE;
else
dwCrackFlags = ICU_ESCAPE;
}
bRetVal = InternetCanonicalizeUrl(pstrURL, szCanonicalizedURL,
&dwNeededLength, dwCanonicalizeFlags);
if (!bRetVal)
{
if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER)
return FALSE;
pstrCanonicalizedURL = new TCHAR[dwNeededLength];
if (pstrCanonicalizedURL == NULL)
return FALSE;
bMustFree = TRUE;
bRetVal = InternetCanonicalizeUrl(pstrURL, pstrCanonicalizedURL,
&dwNeededLength, dwCanonicalizeFlags);
if (!bRetVal)
{
delete [] pstrCanonicalizedURL;
return FALSE;
}
}
else
pstrCanonicalizedURL = szCanonicalizedURL;
// now that it's safely canonicalized, crack it
bRetVal = InternetCrackUrl(pstrCanonicalizedURL, 0,dwCrackFlags, lpComponents);
if(bUnescape)
{
if(FAILED(UrlUnescape(lpComponents->lpszUrlPath,NULL,NULL,URL_UNESCAPE_INPLACE URL_DONT_UNESCAPE_EXTRA_INFO)))
{
if (bMustFree)
delete [] pstrCanonicalizedURL;
return FALSE;
}
lpComponents->dwUrlPathLength = lstrlen(lpComponents->lpszUrlPath);
}
if (bMustFree)
delete [] pstrCanonicalizedURL;
if (!bRetVal)
dwServiceType = INTERNET_SCHEME_UNKNOWN;
else
{
nPort = lpComponents->nPort;
dwServiceType = lpComponents->nScheme;
}
return bRetVal;
}
//SDK available function to parser url string
//durumul.com
BOOL MyParseUrl(LPCTSTR pstrURL, DWORD& dwServiceType,
LPSTR strServer, LPSTR strObject, int & nPort,
LPSTR strUsername, LPSTR strPassword, DWORD dwFlags/* = 0*/)
{
dwServiceType = INTERNET_SCHEME_UNKNOWN;
if (pstrURL == NULL)
return FALSE;
URL_COMPONENTS urlComponents;
memset(&urlComponents, 0, sizeof(URL_COMPONENTS));
urlComponents.dwStructSize = sizeof(URL_COMPONENTS);
urlComponents.dwHostNameLength = INTERNET_MAX_HOST_NAME_LENGTH;
urlComponents.lpszHostName = strServer;
urlComponents.dwUrlPathLength = INTERNET_MAX_PATH_LENGTH;
urlComponents.lpszUrlPath = strObject;
urlComponents.dwUserNameLength = INTERNET_MAX_USER_NAME_LENGTH;
urlComponents.lpszUserName = strUsername;
urlComponents.dwPasswordLength = INTERNET_MAX_PASSWORD_LENGTH;
urlComponents.lpszPassword = strPassword;
BOOL bRetVal = _myparseurl(pstrURL, &urlComponents,dwServiceType, nPort, dwFlags);
return bRetVal;
}
글타래
-
▼
2009
(71)
-
▼
6월
(44)
- 윤아아빠,전자담배 에바코 참고~
- usb 로 xp 설치
- ML115 서버 및 구닥다리 M925보드 업글용 백업메모
- g304와 g300p를 팔고 N5004를 질러...??
- 은행 인터넷뱅킹시 짜증나는 잡동사니 ActiveX 악성 보안툴들
- 전자담배 에바코 에바,연기적을때 응급조치요령
- 전자담배, 건강에 덜 해롭다? 안전성 검증 시급
- 진짜 같은 '전자담배'. 효과도 OK?
- 게임 개발자 중에서 서버개발이랑 클라이언트 개발 차이점은 뭔가요?
- 언제부턴가 인터넷 접속 모니터링 당하고 있다
- 아,고민되네 서버 프로그래밍 구성기술은 뭘로하지?...
- Win32 IOCP를 따라잡을 Unix, Linux, *BSD계열의 방법은?
- 프로그래머가 되는 방법
- 모던토킹 80년대 롤라장음악 '쉐리쉐리 레이디' 자작 공짜 벨소리 다운로드 해가삼!!
- MS-Windows 플랫폼의 Socket I/O Model 에는
- 솔직히 이 블로그스팟은,
- [강좌] MFC Ribbon Programming - MFC 리본 사용하기
- 블로그의 오른쪽 마우스 금지시킨거나 풀자!!
- 개떡같은 MS-VS++ 플랫폼 및 MFC DLL
- MS-Windows 에서도 Paint.Net 말고 더 좋은 김프를 쓰자! GTK와 GDK
- 무료소프트웨어
- 정적으로 MFC에 링크된 기본 DLL
- MFC 확장 DLL,정적 라이브러리로 링크는 안되는 것일까? -- 정답:안된다
- STATUS_DLL_NOT_FOUND with VS2008,VS200x
- 통합 메신저
- MFC정적으로 DLL 링크 + /MT 시 다음의 wincore.cpp 1475 line 에...
- MFC에 정적 또는 동적으로 링크하는 기본 DLL
- Download Visual Studio 2010(VS2010) Professional B...
- RedistributingVisualCppRunTimeLibrary
- 윈도 애플리케이션을 개발할 때 주로 쓰는 마이크로소프트(이하 MS)의 개발 도구들
- Microsoft Side-by-Side Horror Visual C++ 2008
- 파일만 잘 다뤄도 파워유저(?)
- Seoul City Hall and DeokSuGung
- 2008' 남해에 가려면 삼천포로 빠져야 한다!! 휴가지 남해일주,삼천포의 대교~여수
- URL Parse for SDK Function like AfxParseUrl
- 요즘세대도 이렇게 공부하려나? C언어 이야기
- 7zip plugin Api
- VC 2008 Feature Pack ::MFC 9.0 - 리본바 (Ribbonbar)
- WIN32 SDK FrameWork 라이브러리
- Visual Studio Technical Articles:: Boost for Visua...
- Visual C 에서 CRT와 MFC 라이브러리가 잘못된 순서로 링크되면 LNK2005
- 거꾸로 가는 MicroSoft™ 의 운영체제
- VC 에서 EXE크기 줄이면서 MFC90,MSVCRxx MSVCP DLL 포함 안하는 법
- My This blog moved from http://blog.hanafos.com/ye...
-
▼
6월
(44)
2009년 6월 12일 금요일
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기