kkuzil.own@gmail.com

Posted
Filed under 주절주절
에구... 하루종일 공부찔금찔금하다, 뒹굴다... 도저히 공부 의욕이 안생겨서
결국 동네 피씨방에 왔다... 아주 슬럼프가 제대로 왔나부다...

점점더 심해지는거 같은데...
집에 있으면 너무 답답하고 집중도 안되고...

놀기로 했으니 실컷놀다 가야지-ㅁ-;;
2007/09/29 18:34 2007/09/29 18:34
Posted
Filed under 주절주절
어제까지 추석연휴였는데.. 너무 쉬어서 그런지.. 일하기 싫어서 뒈질뻔했다-ㅁ-;;헥헥ㅋ
이놈의 블로그를 어찌꾸며야 할지... 원래 매일매일(?) 공부한 기록을 남길려고 했는데...
공부를 워낙 안하다보니깐 이지경까지 왔구나..-_-;;

일년이 다 되가는데... 뭐.. 공부한 기록이 없네-_-;; 이거이거 눈에 확뛰니깐
왠지 부끄럽다... 가끔 이렇게 일기나 쓰고 가는정도만 쓰고말야ㅎㅎ

웹호스팅은 연장하긴 했는데..도메인을 연장해야하나.. 웹호스팅비보다 2배나 많다..ㄷㄷ
어짜피 보여줄 사람도 없는데..ㅋㅋ 좀 나중에 남한테 보여줄꺼리 쌓아놓고 신청해야지ㅎㅎ

암튼 요즘 일도 많은데.. 왤케 의욕이 없는지... 은지랑도 계속 안좋구...
어찌해야할까요... 헐헐... 이거 정말 어렵네=_=
2007/09/27 23:00 2007/09/27 23:00
Posted
Filed under Development/Delphi

안녕 하십니까?
(주)바로북닷컴의 김성규 입니다.
이 강좌는 본인이 관리합니다. 다른곳으로 옮기시면 출처를 밝혀주시기 바랍니다.

질문란에 인터넷 연결상태를 체크하는 방법에 대한 질문이 많이 올라옵니다.
Ping을 이용하는 방법에서 갖가지 방법이 있는데.. 표준 API 를 사용해 봅시다.
저도 사실 그동안은 네트워크카드의 정보를 읽어와서 활성화된 상태인지.. 또
루프백 디바이스인지를 가지고 체크해왔었지요.

강좌에 사용된 환경 : 델파이5, Windows 2000 pro, 익스플로러 5.0.2290
소스 정렬 : Tab size 4


-----

마이크로 소프트는 인터넷관련 API 를 간편하게 제공합니다.
FTP나 HTTP 같은 것을 만든다고 한다면 굳이 소켓을 사용할 필요가 없습니다.

하지만 이 강좌에서는 인터넷 연결상태 체크와 연결을 호출하는 것을 알아봅니다.

이 API 는 WinInet.dll 에 포함되어 있습니다.
이 DLL에 대한 인터페이스는 델파이에 이미 포함되어 있습니다.
/source/rtl/win/wininet.pas 죠.. (플랫폼 SDK에 포함된 wininet.h 를 번역하다가
죽을뻔 했음.. --;)

하지만 도움말에는 포함이 안되어 사람들이 잘 모르는 것 같습니다.

주의 할 점은 이 API 들은 익스플로러 4.0 부터 제공합니다.
다시 말하면 익스플로러가 반드시 4.0 이상이 깔려있어야 사용할 수 있다는
것입니다.
wininet.dll 을 같이 배포할 수도 있지만 별로 권장할 일은 아니죠.. MS 가 언제
업그레이드할지 모르니까요.

익스플로러버전에 따른 API 리스트는 다음과 같습니다.

API Functions Introduced in Internet Explorer 4

CreateUrlCacheGroup
DeleteUrlCacheGroup
FindFirstUrlCacheEntryEx
FindNextUrlCacheEntryEx
GetUrlCacheEntryInfoEx
HttpEndRequest
HttpSendRequestEx
InternetAutodial
InternetAutodialHangup
InternetDial
InternetGetConnectedState
InternetGoOnline
InternetHangUp
InternetReadFileEx
SetUrlCacheEntryGroup


API Functions Introduced in Internet Explorer 5

FindFirstUrlCacheGroup
FindNextUrlCacheGroup
FtpCommand
FtpGetFileSize
GetUrlCacheGroupAttribute
InternetGetConnectedStateEx
SetUrlCacheGroupAttribute


여기서 연결 상태를 체크하는 것은 InternetGetConnectedState 를 이용하면
간단합니다.

연결을 하는 것은 InternetAutodial 을 이용하면 됩니다.

이 함수들에 대한 도움말은 MSDN이나 플랫폼 SDK에 포함된 도움말을 이용하세요.

다음은 간단히 만들어본 유닛의 소스입니다.

(*
인터넷 관련 윈도우즈 API 자동화 유틸리티.

   제작자 : 김성규. allex@barobook.com
   날  짜 : 2000.09.16

*)

unit InternetUtil;

interface

uses
Windows, Dialogs, Forms, WinInet;

// Functions
function InternetConnected : Boolean;
function ConnectToInternet(Parent : TForm) : Boolean;
function AutoConnectToInternet(Parent : TForm) : Boolean;

implementation

function InternetConnected : Boolean;
var
Flags : DWORD;
begin
Flags := INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_MODEM or
INTERNET_CONNECTION_PROXY;

Result := InternetGetConnectedState(@Flags, 0);
end;

function ConnectToInternet(Parent : TForm) : Boolean;
begin
Result := InternetAutodial(0, Parent.Handle);
end;

function AutoConnectToInternet(Parent : TForm) : Boolean;
begin
Result := True;
   if not InternetConnected then
   begin
    ShowMessage('인터넷에 연결되지 않았습니다. 연결을 시도합니다.');
// 모뎀으로 인터넷 연결을 시도한다.
       if ConnectToInternet(Parent) = false then
           Result := False;
   end
end;

end.


사용 예는 다음과 같습니다.

procedure TForm1.Button5Click(Sender: TObject);
begin
//
   if AutoConnectToInternet(Self) = False then
   begin
    ShowMessage('인터넷 연결에 실패하였습니다.');
   end else begin
    ShowMessage('인터넷에 연결된 상태 입니다..');
   end;
end;

간단하죠?

이상입니다.

2007/09/20 17:55 2007/09/20 17:55
Posted
Filed under Development/Delphi

단축아이콘 만들기
출처 : 델파이 3000

아래 소스는 바탕화면, 시작메뉴, 보내기 에 단축아이콘을 만드는 함수입니다.

사용예는 첨부파일 참조


procedure CreateShortcut(FileName: string; Location: ShortcutType);
var
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
Directory,
LinkName : string;
WFileName : WideString;
MyReg,
QuickLaunchReg : TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;

MySLink.SetPath(PChar(FileName));

MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
try
  LinkName := ChangeFileExt(FileName, '.lnk');
  LinkName := ExtractFileName(LinkName);
  case Location of
    _DESKTOP    : Directory := MyReg.ReadString('Shell Folders', 'Desktop', ''); // 바탕화면
    _STARTMENU  : Directory := MyReg.ReadString('Shell Folders', 'Start Menu', '');// 시작메뉴
    _SENDTO     : Directory := MyReg.ReadString('Shell Folders', 'SendTo', '');  // 보내기
    _QUICKLAUNCH:   // 디렉토리가 유동적(사용자에 따라)
  begin
       QuickLaunchReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\GrpConv');
       try
         Directory := QuickLaunchReg.ReadString('MapGroups', 'Quick Launch', '');
       finally
         QuickLaunchReg.Free;
       end;
     end;
 end;

 if Directory <> '' then
   begin
     WFileName := Directory + '\' + LinkName;
     MyPFile.Save(PWChar(WFileName), False);
   end;
finally
  MyReg.Free;
end;
end;  

2007/09/20 17:54 2007/09/20 17:54
Posted
Filed under Development/Delphi
WinExec(PChar('cmd /c explorer /select,"C:\test.txt"'), SW_SHOWNORMAL);
2007/09/20 17:53 2007/09/20 17:53