EX1.

1. Create a new ActiveX DLL Project in Visual Basic.
2. Select References from the Project menu and add the following references to the project:
'Microsoft Transaction Server Type Library' (MTXAS.DLL)
'Microsoft Active Server Pages Object Library' (ASP.DLL)
3. Name the Project ObjectCtxtProject and name the Class ObjectCtxtClass.
4. Set the Class Property MTSTransactionMode = 1 - NoTransactions.
5. Copy and paste the following code into the Class Module:


[CODE]Implements ObjectControl Private objContext As ObjectContext Option Explicit Private Sub ObjectControl_Activate() ' Get a reference to the object's context here, ' so it can be used by any method that may be ' called during this activation of the object. Set objContext = GetObjectContext() End Sub Private Function ObjectControl_CanBePooled() As Boolean ' This object should not be recycled, ' so return false. ObjectControl_CanBePooled = False End Function Private Sub ObjectControl_Deactivate() ' Perform any necessary cleanup here. Set objContext = Nothing End Sub[/CODE]



6. Copy and paste the following public method into the Class Module:


[CODE]Public Sub TestMethodObjectCtxt() Dim objResponse As Response Dim objRequest As Request Set objResponse = objContext("Response") ' Obtain ASP Response object Set objRequest = objContext("Request") ' Obtain ASP Request object If InStr(objRequest.ServerVariables("HTTP_USER_AGENT"), "MSIE") > 0 Then objResponse.Write "You are using a very powerful browser." Else objResponse.Write "Try Internet Explorer today!" End If End Sub[/CODE]



7. Compile the DLL.
8. Add the DLL to a MTS Server/Library Package.
9. Copy and paste the following ASP script into a new ASP file in a virtual directory.


[CODE]<% set obj = Server.CreateObject("ObjectCtxtProject.ObjectCtxtClass") obj.TestMethodObjectCtxt set obj = Nothing %>[/CODE]


10. Request the ASP file from a browser, you will see the following result if you are running Internet Explorer:

You are using a very powerful browser.

Otherwise you will see the following result:

Try Internet Explorer today!


EX2.

1. Open a new ActiveX DLL project.
2. Set a reference to the Microsoft Transaction Server (MTS) Type Library (Mtxas.dll).
3. Set a reference to the Microsoft Active Server Pages Object library (Asp.dll).
4. Rename the project as prjMTS and class as clsMTS.
5. Copy the following code to the clsMTS:


[CODE]Dim objApplication As Object Dim objSession As Object Public Function GetVar() As String Dim objCtx As ObjectContext Set objCtx = GetObjectContext Set objApplication = objCtx.Item("Application") Set objSession = objCtx.Item("Session") GetVar = objApplication("Var1") & objSession("Var2") & "..." End Function[/CODE]



6. Create a blank new ASP page under one of virtual directories and add this code to it:

[CODE]<% Application("Var1") = "Where do you want" Session("Var2") = "to go today ?" Dim obj Set obj = Server.CreateObject("prjMTS.clsMTS") response.write obj.GetVar() Set obj = Nothing %>[/CODE]


7. When you run this ASP page, the variables set in the page are accessed inside the Visual Basic component and the following appears in the browser:

Where do you want to go today ?



출처 : MSDN.com


주의1.)
Response, Request, Server, Application, Session 등의 asp 객체를 사용하고자 할경우 MTS 없이 사용하면 오류가 발생한다 .
이는 MTS 없이는 컴포넌트가 Context 를 관리할수 없기때문이며, 어떤 클라이언트에게 asp 구문을 수행해야 하는지 알길이 없기 때문이다 .

주의출처 : LikeJazz(박 상길) 님의 "COM+ 로 구현해보는 게시판 리스트 페이지" 강좌중...

주의2.)
Visual Basic ServicePack 이 설치가 되어야 한다.
테스트는 ServicePack 5, 6 두가지에서 테스트 완료 했다.
골빈해커님이 만드신.. http://blog.golbin.net/ ..
블로그 사이트에 올라온 최신 포스팅 글들을 쭉 모아오는...
내가 php는 잘몰라서.. 어찌 했는지 물어봤더니..
간단하다는 말만.. 후후 -_-;;;
php로 개발한것 같던데..
asp로 한번 만들어 보고 싶은.. 생각이 들어서..

asp로 그냥 하기는 힘들거 같구..
vb에 있는 inet 컨트롤을 이용해서 파싱.. 해봤는데.
그런데로 만족할만한 결과가 온것 같다.
일단 TatterTools 사이트에 있는것만 뽑아 오는 소스는 아래와 같다.
별로.. 대단한건 아니지만..
그냥. 함 해보고 싶어서.. -_-;;;;

[CODE] <% Option Explicit Dim inet Dim tmpUrl, tmpStr Dim iStart, iEnd, content Dim tmpCont, i '불러올 tmpUrl 주소 tmpUrl="http://www.tattertools.com/tc/view_main.php" 'inet 컨트롤 객체 생성 및 속성값 셋팅 set inet = server.CreateObject("inetCtls.Inet") inet.RequestTimeout = 20 inet.tmpUrl = tmpUrl tmpStr=inet.OpentmpUrl 'Split로 자를 기준포인트를 만들기 위해 의미없는 문자를 삽입 tmpStr = Replace(tmpStr,"<td class=h1","!@#$%<td class=h1") '가져올 문자열 범위 설정 iStart=intmpStr(tmpStr, "!@#$%") iEnd=intmpStr(tmpStr, "<table width=470 cellpadding=0 cellspacing=0 style=margin-top:15>") '해당범위만큼 문자를 가져와서 변수에 담음 content=Mid(tmpStr, iStart, iEnd-iStart) '해당하는 내용중에 반복되는 값을 기준으로 잘라서 배열에 담는다 tmpCont = split(content,"!@#$%") Response.Write "<table width=""100%"" border=0 cellpadding=0 cellspacing=0>" Response.Write "<tr><td class=h1 colspan=3>***Tatter Tools***</td></tr>" Response.WRite "<tr onmouseover=""this.style.backgroundColor='#FFFAF0';"" onmouseout=""this.style.backgroundColor='#FFFFFF';"">" '루프를 돌면서 해당 값을 화면에 출력 for i=Lbound(tmpCont) to Ubound(tmpCont) if i> 30 then exit for Response.Write tmpCont(i) Next '객체 반환 Set inet = nothing %> [/CODE]


스타일시트만 적용하면 괜찮아 질듯..
얼마나 효율적인지는 모르겠지만.. 쩝..

진짜 짜증이 막나고롬..
리소스도 많이 차지해먹는기 자꾸 소스보기 하면 열리는게 정말 싫었는데..
옵션에도 없고..
결국 레지스트리에서 해결했습니다.

레지스트리 편집기를 열어서..

HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet Explorer
거기서 View Source Editor란 항목을 삭제하면 되네요..

+ Recent posts