Q&A

  • ocx를 free하려면?
안녕하세요.
ocx자동갱신기능을 만들다가 한가지 질문을 올립니다.
ocx하나와 거기서 호출하는 dll, ini파일들이 몇개 있습니다.
이 ocx가 create될때 서버에서 이 파일들의 버전정보를 읽어와 갱신되였으면 autoupgrade.exe를 호출하고 ocx자체를 free해주어 ocx와 부속파일들을 갱신하려고 합니다.
그간 삽질끝에 다른건 다 되였는데 ocx자신을 free하는것은 잘 안됩니다.
ie에서 생성된 ocx가 자신을 free하는것이 가능할까요.
선배님들의 고견 기다립니다.
5  COMMENTS
  • Profile
    steps 2008.10.15 01:56
    ocx내에서 close나 free를 쓰면 ocx자체는 없어지는데 IE가 이 파일명을 물고 있어서 새로 다운로드된 파일을 복사할수가 없습니다.
    이거 인증받을 정도의 상품도 아니고 기업내부망용도여서 이런 업그레이드방식을 택했는데 방도가 보이지않네요.
  • Profile
    구창민 2008.10.15 17:47
    안녕하세요..

    등록하실때 윈도그 명령 regsvr32 로 하지 않으셨나요..?

    regsvr32 -u 옵션으로 해제가 가능할텐데..
  • Profile
    steps 2008.10.16 02:15
    ocx의 등록은 installshield로 배포판을 만들때 자동등록설정을 주어 설치시에 자동으로 됩니다.
    ocx의 코드내에서 self.close를 호출하면 ocx자체가 free되지 않는가요?
    테스트로 간단한 ocx를 만들어보면 self.close를 주었을때 ocx가 ie화면에서 사라집니다.
    하지만 ocx를 호출했던 ie페지가 close되기전에는 이 ocx를 delete하거나 overwrite할수 없습니다.
    아마 ie가 해당 ocx의 파일핸들을 계속 쥐고있는것 같습니다.
    이 상태에서 ocx를 unregister해주면 ie가 쥐고 있는 파일핸들이 해방되서 새 버전의 ocx를 복사할수있는지요.
    가르쳐주심에 따라서지못해 죄송합니다.
  • Profile
    구창민 2008.10.16 17:49
    코드로 등록및 제거가 필요한 부분인거 같네요..

    아래 코드를 참고하셔서 테스트 해보세요..

    즐거운 프로그래밍 하시구요~

    //ocx 를 코드로 추가제거하는 예제
    program RegisterMyOCX;
    uses
    OLECtl, Windows, Dialogs;
    var
    OCXHand: THandle;
    RegFunc: TDllRegisterServer; //add to the uses clause
    begin
    OCXHand:= LoadLibrary('c:\windows\system\test.ocx');
    RegFunc:= GetProcAddress(OCXHand, 'DllRegisterServer'); //case sensitive
    if RegFunc <> 0 then
    RegFunc
    else
    ShowMessage('Error!')
    FreeLibrary(OCXHand);

    // You can the same way unregister the OCX:
    // replace 'DllRegisterServer' by 'DllUnregisterServer'
    end.

  • Profile
    steps 2008.10.16 20:27
    구창민님 감사합니다.
    • 구창민
      2008.10.17 22:11
      안녕하세요.. 부인되시는 분이 어떤 실수를 하셨길래..ㅎㅎ:: 우선 부인되시는 분께서 하시는 일의...
    • 최용일
      2008.10.16 06:05
      그냥 간단하게 WM_DEVICECHANGE메세지를 처리하는 메세지핸들러하나 만들어주시면 됩니다. 아래 예제...
    • 하늘사랑
      2008.10.16 08:43
      답변 너무 감사드립니다 ^^ 소스보구 더 연구좀 해봐야겠어요 ^^ 시점도 중요하궁.. 생각할께 많내...
    • 석주현
      2008.10.16 02:44
      정 어려우시다면 네이트온 친구 찾기 해주세요. ^^ superjuhyun 골뱅이 hotmail.com 입니다.
    • phono
      2008.10.16 09:48
      델7용 퀵4 소스가 있어야 해결이 날거 같네요..
    • 박무개
    • 2008.10.16 00:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.10.16 17:38
      안녕하세요.. 퀀텀 그리드는 잘 모르지만, SelectedRowCount -1 로 for 문을 한번 돌려보세요.. ...
    • 가르쳐주삼
      2008.10.16 19:13
      i = 0으로 하고 SelectedRowCount -1로 해서 for문을 돌아도 오류가 발생합니다.....ㅠ.ㅠ bmtemp에 ...
    • 석주현
      2008.10.15 17:40
      FindFirst, FindNext 를 찾아 보시면 될 것 같네요. 결국 파일 이름과 어트리 뷰트로 확인 합니다. ...
    • 하늘사랑
      2008.10.15 19:12
      친절한 답변 너무 감사드립니다 ^^ 오늘도 즐겁고 행복한하루 보내시구요~ 감시조심하셔용 ^^ 답변...
    • 정경철
    • 2008.10.15 06:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.15 17:19
      다이렉트 쇼 예제를 보시면 믹싱 예제가 있습니다. 예제에 보시면 믹싱과 PIP, Overlay 등 여러가지 ...
    • 구창민
      2008.10.16 17:40
      안녕하세요.. 질문이 너무 두리뭉실(?)한거 같습니다.. 오류가 발생했을때 어떤 오류메시지였으며...
    • 손석수
    • 2008.10.15 01:50
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.15 02:32
      다른 사람이 만든 소스면 그 사람에게 달라던지 아니면 TEdit를 상속해서 임시로 동작하게 한 후에 다시 ...
    • 손석수
      2008.10.15 13:44
      델파이는 처음 접하는 툴이라 직접 만드는 코딩을 하지 못하구요. 다른 사람이 만들어 놓은 소스를 ...
    • 석주현
      2008.10.15 17:24
      파일 이름에서 보듯이 분명히 TEdit에서 상속 받은 컴포넌트 같습니다. 일단 소스전체를 다른 디렉토...
    • 싸랑
      2008.10.16 19:55
      http://www.delphiforfun.org/Programs/Download/numedit.zip
    • steps
    • 2008.10.15 01:39
    • 5 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.10.15 01:56
      ocx내에서 close나 free를 쓰면 ocx자체는 없어지는데 IE가 이 파일명을 물고 있어서 새로 다운로드된 파...
    • 구창민
      2008.10.15 17:47
      안녕하세요.. 등록하실때 윈도그 명령 regsvr32 로 하지 않으셨나요..? regsvr32 -u 옵션으로 해...
    • steps
      2008.10.16 02:15
      ocx의 등록은 installshield로 배포판을 만들때 자동등록설정을 주어 설치시에 자동으로 됩니다. ocx의 ...
    • 구창민
      2008.10.16 17:49
      코드로 등록및 제거가 필요한 부분인거 같네요.. 아래 코드를 참고하셔서 테스트 해보세요.. 즐거...
    • steps
      2008.10.16 20:27
      구창민님 감사합니다.
    • 김주영
    • 2008.10.15 00:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.15 02:36
      기본 VCL만 사용했다면 아주 소소한 부분에서 프로퍼티 에러 정도 나겠죠. 다른 컴포넌트 같을 걸 사용...
    • 홍성락
      2008.10.15 00:45
      image Transparent로 검색하시면 투명, 반투명에 대해 많이 나옵니다, image에서 Transparent되는 Colo...
    • 석주현
      2008.10.15 03:02
      TImage 위에 TPaintBox를 올려 놓으시고 사용하시면 됩니다.
    • 임정미
      2008.10.17 23:43
      Transparent 색을 지정해 줘야하는진 몰랐네요. 덕분에 잘 해결했습니다. 감사합니다.^^
    • 김기범
    • 2008.10.14 21:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.15 02:50
      이동은 시킬수 있습니다. 메모장의 헨들을 가지고 와서 이동은 가능합니다만 회전을 안됩니다. ㅡ_ㅡ;...
    • 김원호
    • 2008.10.14 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.15 02:55
      무슨 리포트를 쓰시는지 알려 주셔야 아마도 답변이 나올것 같네요. 그런데 보통 리포트에도 메모와 ...
    • 최용일
      2008.10.14 02:39
      CreateProcess나 ShellExecuteEx등을 이용해서 종료될때까지 대기하시면 됩니다. 아래 팁을 참고하세...
    • 장성호
      2008.10.14 02:58
      프로그램을 실행후에 WaitForSingleObject 로 해당 프로세스가 종료될때 까지 기다리면 됩니다. ...
    • 하늘사랑
      2008.10.14 04:10
      두분 모두 좋은답변 너무너무 감사합니다.. ^^ 두분 덕분에 문제를 해결했습니다 ^^ 감기조심하시공 ...
    • steps
    • 2008.10.13 23:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.10.16 10:15
      ImageEn 이라는 컴포넌트를 확인해 보세요. AniGif를 읽고 쓰는 기능이 있습니다. 리사이징 기능도 있을...
    • steps
      2008.10.17 01:30
      ImageEn에 프레임별 이미지추출, 이미지삽입, 프레임삭제의 기능은 있는데 리사이징은 없군요. 정욱님 ...