레이블이 Web인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Web인 게시물을 표시합니다. 모든 게시물 표시

2010년 2월 17일 수요일

GDI+ 사용

Windows XP에서 지원하는 GDI+

Link : gdiplus.lib

 

사용하는 곳에 초기 선언

#include <gdiplus.h>

using namespace Gdiplus;

 

class GdiplusTest

{

   GdiplusTest;

   ~GdiplusTest;

private:

    ULONG_PTR m_gdiplusPTR;

}

 

GdiplusTest::GdiplusTest

{

   GdiplusStartupInput gdipluse;
   GdiplusStartup(&m_gdiplusPTR, &gdipluse, NULL);

}

GdiplusTest::~GdiplusTest

{

   GdiplusShutdown(m_gdiplusPTR);

}

 

void GdiplusTest::Draw()

{

   CDC *pDC;

   pDC = GetDC();

   RectF rectTemp;

 

   Graphics graphics(pDC);
   Pen pen(Color(255, 0, 0), 1);

   graphics.SetPageUnit(UnitPixel);
   graphics.DrawEllipse(&pen, rectTemp);

   ReleaseDC(pDC);

}

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(VC++)통

프로세스 강제 종료

=========================================================================================

   본 팁&트릭은 EnjoyDEV.NET에서 나온 것이며 재배포시 이 문구는 포함시켜주시기 바랍니다.

=========================================================================================

 

Script를 사용하여 만들었습니다.

프로젝트->참조에서 Microsoft Scripting Runtime 을 추가하시면 됩니다.

이 참조파일(Scrrun.dll)은 시스템 파일이기 때문에 모든 OS에 존재하는 파일이니 따로 배포할 필요가

없습니다.

 

Public Sub KillProcess(PName As String)
'--------------------------------------------------------------------------------------------
'만든사람: 신종흔(chiuoo@enjoyev.net)
'만든날짜: 2007.03.22
'사용법: KillProcess([실행파일명])
'        --> 실행파일명은 작업관리자->프로세스탭에서 이미지 이름에 해당하는 이름과 동일
'--------------------------------------------------------------------------------------------
    Dim pgm As String
    Dim wmi As Object
    Dim processes, process
    Dim sQuery As String
   
    pgm = PName
    Set wmi = GetObject("winmgmts:")
    sQuery = "select * from win32_process where name='" & pgm & "'"
    Set processes = wmi.execquery(sQuery)
   
    For Each process In processes
        process.Terminate
    Next
   
    Set wmi = Nothing
End Sub

 

출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=48&MAEULNO=19&no=3332

2010년 2월 12일 금요일

sql Injection 처리

특정 문자를 검색하여 SQL에 치명적인 오류를 발생하는 문자일 경우

사용을 금지한다.

 

function checkSqlInjection(strData)

   dim CheckArray

   dim Checkdata

   CheckArray = Array("'or", "' or", "or'", "or '", "like'", "like '", "union ", " from ", "delete ", "insert ", "update ", "select ", "xp_cmdshell", "exec ", "master")

   checkSqlInjection="Y"

   for i=0 to ubound(CheckArray )

       Checkdata=0

       Checkdata=instr(strData, CheckArray(i))

       if CheckData>0 then

           checkSqlInjection = "N"

           exit function

       end if

   next

end function

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

web 에서 DB 입력 특수문자 처리

Web 에서 DB로 insert 할때 특수 문자 오류가 발생하는 경우가 많다.

 

그래서 기본적인 특수 문자는 변환하여 입력한다.

 

 Function ConvertChar(strValue)

   strValue = trim(strValue)

   strValue = Replace(strValue, "&", "&")

   strValue = Replace(strValue, "<", "<")

   strValue = Replace(strValue, ">", ">")

   strValue = Replace(strValue, "'", "'")

   strValue = Replace(strValue, """", """)

   strValue = Replace(strValue, "|", "|")

   strValue = Replace(strValue, vbCrLf, "<br>")

   ConvertChar = strValue

End Function

<!-- 변경 -->

 

Function DeConvertChar(strValue)

   strValue = Replace(strValue, "&", "&")

   strValue = Replace(strValue, "<", "<")

   strValue = Replace(strValue, ">", ">")

   strValue = Replace(strValue, """, """")

   strValue = Replace(strValue, "'", "'")

   strValue = Replace(strValue, "|","|")

   strValue = Replace(strValue, "<br>",vbCrLf)

   DeConvertChar= strValue

End Function

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

parent 에 데이터 전송

parentpage.asp

 

<html>

<head>

<title>parentpage</title>

<script language="javascript" type="text/javascript">

<!--

   function callParentpage(nextdata)

   {

      if(nextdata == "")

        change.style.display = "";

      else

        change.style.display = "none";

   }

-->

</script>

</head>

<body>

   <div id=change style=postion:absolute; display:none;">

     <br>

      보여라

   </div>

 <iframe id=childpage name=childpage src=child.asp width=100 height=100 marginwidth=0 marginheight=0 scrolling=auto></iframe>

</body>

</html>

 

child.asp

<html>

<head>

<title>child page</title>

<script language="javascript" type="text/javascript">

<!--

   function Senddata(nextdata)

   {

       parent.callParentpage(nextdata);

   }

-->

</script>

</head>

<body onload=javascript:Senddata("")>

새로운 창에서 호출

</body>

</html>

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

include

#include file = "파일 경로/파일명"

 : 파일 전체를 화면에 표시한다.

Include 파일과 main 파일이 같은 딜렉토리 또는 하위 딜렉토리에 위치할때 사용한다.

 

 

#include virtual = "파일 경로/파일명"

 : 위 내용과 동일하나, 다른 딜렉토리 하위 딜렉토리가 아닌 곳에 파일이 위치할때 사용한다.

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

iframe 사용하기

iframe은 특정한 부분을 frame로 분리해서 전체 페이지 업로트 없이 iframe으로 정의된 페이지만

수정 변경하여 업데이트 할때 사용한다.

 

<%

 

%>

<script language="javascript" type="text/javascript">

<!--

   function update()

  {

      var sddata = "a";

      var sdstate = "b";

      poupdate.location.href = "./poupdate.asp?aaa="+sddata+"&bbb="+sdstate

  }

-->

</script>

 

 

<table width="500" border="0" cellspacing="0" cellpadding="0" style="cursor:hand; onclick="javascript:update();">

<tr>

<td> 여기는 업데이트 않함 </td>

<td> 여기는 이후에만 업데이트

<iframe id="po_tree" name="poupdate" src="./poupdate.asp" frameborder="0" width="300" height="200" marginwidth="0" marginheight="0" scrolling="auto"></iframe>

</td>

</tr>

</table>

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

RSS 가져오기 (HTML 가져오기)

요구사항

RSS를 지원 싸이트

 

' XML 생성

set xml = CreateObject("Msxml2.ServerXMLHTTP.3.0")
xml.open "GET", "지원하는 싸이트 경로", false
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.send
res1 = xml.status
res = xml.responsetext

 

' 한글 깨지는 것을 방지한다.

Set responseStrm = CreateObject("ADODB.Stream")
responseStrm.Open
responseStrm.Position = 0
responseStrm.Type = 1
responseStrm.Write xml.responseBody
responseStrm.Position = 0
responseStrm.Type = 2
responseStrm.Charset = "euc-kr"
resultStr = responseStrm.ReadText
responseStrm.close
Set responseStrm = Nothing
Set xml = Nothing

' 가져온 데이터 확인

Wscript.Echo "데이터 확인"

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

ASP Error Check

Set objError = Server.GetLastError

Dim ASPError_Number
Dim ASPError_Source
Dim ASPError_Category
Dim ASPError_File
Dim ASPError_Line
Dim ASPError_Column
Dim ASPError_Description
Dim sErrMsg, sQuery

ASPError_Number = Hex(objError.Number)
ASPError_Source = Server.HTMLEncode(objError.Source)
ASPError_Category = objError.Category
ASPError_File = objError.File
ASPError_Line = objError.Line
ASPError_Column = objError.Column
ASPError_Description = objError.Description

 

 

On Error Resume Next
Call Object

If Err.Number <> 0 Then
 Response.Write "오류내용 : " & err.Description
 Response.End
End if

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

ASP 이용 XML Load

XML형식으로 전달되는 데이터 받기

 

<%

   Dim myXml, serverURL, Xadd, strcondition

   DIM DayTemp(3)

 

   set myXml = CreateObject("Microsoft.XMLDCOM")   ' XML 변수선언

   myXml.async = false

   myXml.setProperty "ServerHTTPRequest", True ' HTTP 경로

   serverURL = http://www.google.co.kr/ ' XML 파일 경로

 

   myXml.Load(serverURL)

 

   if myXml.parseError.errorCode <> 0 then  ' 데이터 Loading 확인

       response.write("ERROR")

   else

       set Xadd = myXml.documentElement.selectSingleNode("//current_conditions")  ' //current_conditions 노드 데이터 얻기

       strcondition = Xadd.selectSingleNode("condition").Attributes(0).text

      

   for i = 1 to 3
      Set Xadd = myXml.documentElement.selectSingleNode("//forecast_conditions["&i&"]")  ' //forecast_conditions["&i&"] 노드가 여러개일경우
      DayTemp(i) = Xadd.selectSingleNode("day_of_week").Attributes(0).text
   Next

 

   set Xadd = nothing

   set myXml = Nothing

%>

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

ActiveX 추가하기 (javascript)

ASP 에서 Activex를 사용하기 위해 Object 추가 필요

 

'** Object 생성

<OBJECT id=Actvie????? style="display;none"

codebase="CA?????.cab#version=1,0,0,1"

classid=clsid:F??????-????-????-????-??????????B VIEWASTEXT>

 

<PARAM NAME="_Version" VALUE="65536">

<PARAM NAME="_ExtentX" VALUE="2646"> '초기 Activex 위치

<PARAM NAME="_ExtentY" VALUE="2646">'초기 Activex 위치

<PARAM NAME="_StockProps" VALUE="0">


</OBJECT>

 

'** ActiveX에 파라미터를 넘긴다.

'** 각각의 파라미터는 정해진 형식으로 전송

<HTML>

<HEAD>

</HEAD>

<script language = "javascript">

function ActiveXShow()

{

      Actvie?????.setUrl = "www.????.com";

      Actvie?????.SetWindowRect("400", "4000");

      Actvie?????.Create();

}

</script>

<BODY Onload="javascript:ActiveXShow()" >
<P>Test</P>
<P>

</P>
</BODY>
</HTML>

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

VB Script DB 연결

VB Function으로 DB연결 관련된 내용을 구성하여 쉽게 dB 접근및 Query 전송 하기

 

'------------------- DBConnection.asp

 

<!--METADATA type="typelib" FILE="C:\program Files\Common Files\System\ado\msado15.dll"-->

 

Dim Conn

 

Function OpenDB()

     Dim SeverName, DatabaseName, strUserID, strUserPW

     SeverName = "DBIP:port"

     DatabaseName = "DBname"

     strUserID = "DBUser"

     strUserPW = "UserPW"

 

     Conn.ConnectionString = "provider=SQLOLEDB;Data Source=" & SeverName & ";Initial Catalog=" & DatabaseName & ";User Id=" & DBUser& ";Password=" & strUserPW

     Conn.ConnectionTimeout = 20
     Conn.Open
     Conn.BeginTrans()

End Function

 

Function CloseDB()

      If Conn.Errors.Count > 0 Then
               Conn.RollbackTrans()
      Else
               Conn.CommitTrans()
      End If

 

      If VarType(Conn) = vbString Then
              If Conn.state Then
                      Conn.Close
              End If
      End If

End Function

 

Function QuerySend(strConn, strQuery)

      Dim RecordSet

          On Error Resume Next

     Set RecordSet = Server.CreateObject("ADODB.RecordSet")
     RecordSet.Open strSql, strConn, 0, 1

     If RecordSet.bOF Or RecordSet.EOF Then
           dbQuery = ""
     Else
           dbQuery = RecordSet.GetRows
     End If

 

     RecordSet.Close
     Set RecordSet = Nothing

     If Err.number <> 0 Then
            Err.Clear

     End If

End Function

 

' ----------------------------- end

 

<!-- #include virtual="DBConnection.asp" //-->

 

<%

Dim rTData, strQuery, rRow

Call OpenDB()

setQuery = "Select *from Table"

rTData = QuerySend(Conn, strQuery)

 

Dim IndexLow, indexColl, nLow, nColl

nLow = UBound(rTData, 2)

nColl = UBound(rTData, 1)

 

Call CloseDB()


    if IsArray(rTData) Then

        for indexLow = 0 To nLow

            for indexColl = 0 To nColl

               Response.Write(RS_Tdata(indexColl, indexLow)

            NEXT

        NEXT

   End if

%>

 

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

java script 이용 객체 hidden

단순하게 객체(버튼 또는 Text box 등)을 보기/않보이기 기능

 

<html>
<head>
<title> Text Box Hidden </title>

<script language="JavaScript" type="text/JavaScript">
  <!--
        function SelectChange(arg1)
       {
            var form = document.formSearch;
            if(arg1 < "2")
            { 
                form.I_Sinpt.style.visibility = 'visible';
             }
            else
            {
             form.I_Sinpt.style.visibility = 'hidden';
             }
        }
   //-->
</script>
</head>
<body>
   Text box 숨기기
   <table border="0" align="center" cellpadding="0" cellspacing="0">
   <form name="formSearch" method="post">
     <tr>
       <td width="80">
          <select name="I_Sflag" class="tbox" onChange = "SelectChange(this.value);">
            <option value="1" >하나</option>
            <option value="2" >둘</option>
            <option value="3" >셋</option>
          </select>
       </td>
       <td width="20">
          <input name="I_Sinpt" type="text" class="tbox" size="20" value="" onkeypress="enter()">      
       </td>
     </tr>
   </form>
   </table>
</body>
</html>

 

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

File Down 받기

Client로 파일을 다운 받는다.

 

ASP(VB)

 

<!-- METADATA TYPE="typelib" FILE="C:\program Files\Common Files\System\ado\msado15.dll" -->

 

      Dim objFile, filename

      filename = "text.txt"

 

      Set objFile = Server.CreateObject("ADODB.Recordset") '결과 레코드셋 생성 '

      Response.contentType = "application/unknown"

      Response.AddHeader "Content-Disposition", "attachment; filename=" & filename

      Response.CacheControl = "public"

      Response.Write("확인") ' 파일에 쓰기

      Response.Write(" " & vbcrlf) ' Enter 입력

      set objFile = Nothing

 

파일 다운로드 또는 Open 창을 띄워 Client가 Down 받을수 있도록 한다.

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통

CreateTextFile 을 이용한 File 처리

Web에서는 Client로 파일이 저장되는 것을 기본적으로 금지하고 있다.

 

그래서 Server 에서 파일을 생성하여 그 파일을 다시 Client로 다운 받는 방식을 사용하는데

 

CreateTextFile을 이용하여 파일을 생성하는 것을 알아본다.

 

CreateTextFile는 FileSystemObject 객체에 정의되어 있다.

 

CreateTextFile는 파일을 생성하여 저장한다.

 

사용 방법 (ASP_vb)

 

      Dim fileObj, fileCon

      Dim filename filename = server.MapPath("/testfile1.txt")

      Set fileObj = CreateObject("Scripting.FileSystemObject")

      Set fileCon = fileObj.CreateTextFile(filename, true) ' 줄을 씁니다.

 

      if fileObj.fileExists(filename) Then        ' 파일 생성여부 확인

           fileCon.Write ("테스트") ' 파일을 닫습니다.

           fileCon.WriteBlankLines ("테스트") ' 파일을 닫습니다.

           fileCon.WriteLine ("테스트") ' 파일을 닫습니다.

           fileCon.Close

      else

           '생성실패

      end if

 

CreateTextFile("파일 이름", "덥어쓰기 여부", "Unicode여부:기본 ASCII")

mapPath : server의 Web 서비스 위치

Write : File에 쓴다.

WriteBlankLines : Line을 띄운다.

WriteLine : File에 한 라인을 쓴다.

 

2009년 6월 9일 화요일

DCom 이용하기

SAP 에서 RFC 통신을 이용하여 Web와 데이터를 공유하도록 지원한다.

 

Web와 데이터를 공유하는 방식중 jdk 를 이용하는 방법과 DCom connector 을 이용하는 방법

 

jdk를 이용하여 JAVA 또는 C#이나 .net을 이용하는 방법이 있는데

 

여기서는 DCom을 이용하는 방법을 정리한다.

 

SAP 640 이하버전은 SAP 싸이트를 이용하여 DCom connector를 다운 받아

 

Dll을 생성하여 사용할수 있다.

 

Dcom connector 생성 방법은 따로 설명할 예정이다 (알아두면 편리한것)

 

여기서는 web와의 연결 방법에 대하여 이야기 하겠다.

 

DCom Connector를 사용하기 위해 가장기본이 되는 거는 Web 서비시를 하는 곳에

 

SAP GUI가 깔려 있어야 편하다.

 

우선 Dcom connector에서 생성한 Dll 파일을 구성요소 서비스에 등록한다 (이부분도 따로 설명 하겠다 - 알아두면 편리한것)

 

등록한 Dcom connector의 이름을 이용하여 객체를 생성한다.

 

객체 생성은 기존의 방식과 동일하나 파라미터로 넘겨주는 내용만 맞추면 된다.

 

      Set obj = server.CreateObject("구성요소 서비스에 등록된 DCom connector 이름")

      obj.Destination = "연결한 SAP 서버 이름" // 또는 IP

      obj.Client = "Client 번호"

      obj.UserID = "RFC 통신을 위한 ID"

      obj.Password = "UserID 의 암호"

      obj.Language = "KO" // 사용할 언어

 

위 내용의 대부분은 SAP을 연결하기 위한 SAP GUI에 설정된 내용과 동일하다.

 

이제 생성된 객체를 이용하여 특정의 Function을 호출하는 방법을 보면

 

        Call obj.Zxxxx_xxxx(a, b, c, d, return, sA, Table) // Zxxxx_xxxx 호출 function, a, b, c, d 전송 파라미터, return, sA 구조체, Table 필요 데이터

 

Call 을 이용하여 function을 호출하면 바로 데이터를 얻을수 있다. 참 간단하지 않은가.

 

여기서 주의 할 점이 있다. Table 및 전송 또는 리턴되는 데이터 형을 어떻게 선언할 것인가.

 

Table은 RecodeSet으로 설정하여야 한다.

 

METADATA TYPE="typelib" FILE="C:\program Files\Common Files\System\ado\msado15.dll

 

RecodeSet으로 선언하기 위해서는 반듯이 METADATA TYPE가 선언되어 사용해야 한다.

 

        Dim table   // table 선언

        Set table = Server.Create("ADODB.Recordset")  // 객채 생성

        obj.DimAS "Zxxxx_xxxx", "Table", table   // 형 변환

 

DimAS라는 Function 이 나온다 이전에 생성한 Dll의 .h 파일을 보면 DimAS는 Zxxxx_xxxx Function 에서 사용하는

 

Table 이라는 형태로 table의 형을 변환하여 보내준다.

 

여기서 주의 해야할 점은 "Zxxxx_xxx" 와 "Table"은 SAP에 정의된 이름과 동일해야 한다.

 

그럼 구조체는 어떻게 정의 할 것인가. 사실 구조체는 따로 정의할 필요가 없다. Dim 으로 선언하여 사용하면 된다.

 

다만 구조체 내부의 데이터를 읽어 올때만 틀려진다.

 

위 코드 내용중 sA를 구조체를 선언하였다.

 

sA의 값을 받기 위해서는

 

         Dim sA

         ....

         ....

         response.write(sA("구조체 내부 변수명"))

 

이런식으로 받아 오면 된다.

 

전체 Code

 

      Dim table, obj, a, b, c, d, return, sA

 

     Set obj = server.CreateObject("구성요소 서비스에 등록된 DCom connector 이름")

      obj.Destination = "연결한 SAP 서버 이름"

      obj.Client = "Client 번호"

      obj.UserID = "RFC 통신을 위한 ID"

      obj.Password = "UserID 의 암호"

      obj.Language = "KO"

 

      Set table = Server.Create("ADODB.Recordset")

      obj.DimAS "Zxxxx_xxxx", "Table", table  

 

      a = "a"

      b = "b"

      c = "c"

      d = "d"

      Call obj.Zxxxx_xxxx(a, b, c, d, return, sA, table)

     

      response.write(return)

      response.write(sA("aa"))

      response.write(sA("bb"))

      response.write(sA("cc"))

      response.write(table("aa"))

      response.write(table("bb"))

      response.write(table("cc"))

 

여기서 주의할 점은 Table 에 데이터가 하나도 없으면 table에는 NULL 이 넘어오기 때문에

 

table에 대이터가 있는지 없는지 먼져 Check 하도록 return 에 Table 데이터의 유무 또는 데이터 수량을 리턴하여 사용하는 것이 편하다.

 

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(Web)통