Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
화면모드에 관하여..
안녕하세요..
현재 화면모드가 800*600모드의 화면에서 1024*768모드로 변환하였을때
버튼이나 기타 콘트롤들이 변하여진 화면 모드의 좌표로 변경하고자
합니다.
예를들어 800*600에서 버튼이 left:100 right:100이면 1024*768 에선
그에 대응되는 좌표로 변경이 되어야 될 것 같습니다.
도움부탁드립니다..
4
COMMENTS
장일형
•
1999.06.24 06:16
델초보입니다.
LAN으로 상대방 컴퓨터의이름과 IP를 구해야 하는데 팁을 가지고 짜집기했는데
잘 안되네요.
아래 소스는 실행은 되지만 선택된 컴퓨터의 IP가 Label1.caption에
나타나야 되는데 안됩니다.
폼에는 버튼과 라벨이 하나씩 있고 uses절에 shlobj를 사용했습니다.)
저는 이걸로 급히 수행해야 되는 일이 있는데
정말 미치겠습니다. 제발 도와주세요. 진짜 급합니다. 흑흑..
unit msg1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,shlobj,Winsock;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetNetworkComputer:String;
end;
var
Form1: TForm1;
implementation
{function LocalIP: string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt; // HostEntry 구조체
pptr: PaPInAddr;
Buffer: array [0..MAX_PATH] of char;
i: Integer;
begin
LocalIP := '';
// GetHostName()은 지금 호스트(PC)의 호스트 이름을 Buffer에 얻어낸다
// 호스트 이름은 0으로 끝나는 문자열이 된다
GetHostName(Buffer, SizeOf(Buffer));
// GetHostByName 함수는 인자에 해당하는 호스트의 이름을 가진 호스트에 대한
// hostent구조에 대한 포인터를 리턴한다.
// GetHostByName 함수는 보통 네트워크 데이터베이스의 hosts파일을 참조하거나,
// 도메인 네임 서버(domain name server)에다 주소에 해당하는 호스트를 찾는
// 메시지를 보내고 그에 대한 응답을 기다린다.
phe := GetHostByName(buffer); // Client의 IP이므로 비동기하지 않았음
if phe = nil then
begin
LocalIP := '127.0.0.1';
System.Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do // Multi-Homed 일 경우는 여러개의 IP가 있을 수 있으므로
begin
LocalIP := StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
end;}
function TForm1.GetNetworkComputer:string;
var
PIDL : PItemIDList;
DisplayName : array[0..MAX_PATH] of Char;
BrowseInfo : TBrowseInfo;
begin
{ Get the PItemIDList for CSIDL_NETWORK }
SHGetSpecialFolderLocation(Handle,
CSIDL_NETWORK,
PIDL);
{ Fill our TBrowseInfo record }
BrowseInfo.hwndOwner := Handle;
BrowseInfo.pidlRoot := PIDL;
BrowseInfo.pszDisplayName := @DisplayName[0];
BrowseInfo.lpszTitle := 'Select Network Computer';
BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
BrowseInfo.lpfn := nil;
{ Display dialogbox according to our TBrowseInfo }
SHBrowseForFolder(BrowseInfo);
{ Return our network computer name }
Result := DisplayName;
end;
{...}
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt; // HostEntry 구조체
pptr: PaPInAddr;
Buffer:array [0..MAX_PATH] of char;
i: Integer;
LocalIP:string;
tmp:string;
begin
LocalIP := '';
showmessage(GetNetworkComputer());
for i:=1 to length(tmp) do
buffer[i-1]:=tmp[i];
GetHostName(buffer, SizeOf(buffer));
phe := GetHostByName(buffer); // Client의 IP이므로 비동기하지 않았음
if phe = nil then
begin
LocalIP := '127.0.0.1';
System.Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do // Multi-Homed 일 경우는 여러개의 IP가 있을 수 있으므로
begin
LocalIP := StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
//showmessage(GetNetworkComputer());
label1.caption:=LocalIP;
end;
end.
0
0
삭제
수정
댓글
안치봉
•
1999.04.16 18:39
이호선 wrote:
> 안녕하세요..
> 현재 화면모드가 800*600모드의 화면에서 1024*768모드로 변환하였을때
> 버튼이나 기타 콘트롤들이 변하여진 화면 모드의 좌표로 변경하고자
> 합니다.
> 예를들어 800*600에서 버튼이 left:100 right:100이면 1024*768 에선
> 그에 대응되는 좌표로 변경이 되어야 될 것 같습니다.
> 도움부탁드립니다..
안녕하세요.
델3을 사용하느냐 델4를 사용하느냐에 따라 틀려집니다.
1.델3 - 나이렉스에서 만든 리사이즈콤포넌트를 사용한다.
2.델4 - 각 콘트롤의 type TAnchors = set of TAnchorKind;
type TAnchorKind = (akTop, akLeft, akRight, akBottom);
를 사용한다.
3.참고로 WM_SIZE 메세지가 발생할때 폼에 있는 모든 콘트롤을 수동으로 위치를 지정해 준다. -.-;;
0
0
삭제
수정
댓글
김영대
•
1999.06.24 18:47
장일형 께서 말씀하시기를...
> 델초보입니다.
> LAN으로 상대방 컴퓨터의이름과 IP를 구해야 하는데 팁을 가지고 짜집기했는데
> 잘 안되네요.
> 아래 소스는 실행은 되지만 선택된 컴퓨터의 IP가 Label1.caption에
> 나타나야 되는데 안됩니다.
> 폼에는 버튼과 라벨이 하나씩 있고 uses절에 shlobj를 사용했습니다.)
> 저는 이걸로 급히 수행해야 되는 일이 있는데
> 정말 미치겠습니다. 제발 도와주세요. 진짜 급합니다. 흑흑..
>
> unit msg1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls,shlobj,Winsock;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> Label1: TLabel;
> procedure Button1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> function GetNetworkComputer:String;
> end;
>
> var
> Form1: TForm1;
>
> implementation
> {function LocalIP: string;
> type
> TaPInAddr = array [0..10] of PInAddr;
> PaPInAddr = ^TaPInAddr;
> var
> phe: PHostEnt; // HostEntry 구조체
> pptr: PaPInAddr;
> Buffer: array [0..MAX_PATH] of char;
> i: Integer;
> begin
> LocalIP := '';
> // GetHostName()은 지금 호스트(PC)의 호스트 이름을 Buffer에 얻어낸다
> // 호스트 이름은 0으로 끝나는 문자열이 된다
> GetHostName(Buffer, SizeOf(Buffer));
>
> // GetHostByName 함수는 인자에 해당하는 호스트의 이름을 가진 호스트에 대한
> // hostent구조에 대한 포인터를 리턴한다.
> // GetHostByName 함수는 보통 네트워크 데이터베이스의 hosts파일을 참조하거나,
> // 도메인 네임 서버(domain name server)에다 주소에 해당하는 호스트를 찾는
> // 메시지를 보내고 그에 대한 응답을 기다린다.
> phe := GetHostByName(buffer); // Client의 IP이므로 비동기하지 않았음
> if phe = nil then
> begin
> LocalIP := '127.0.0.1';
> System.Exit;
> end;
>
> pptr := PaPInAddr(Phe^.h_addr_list);
> i := 0;
> while pptr^[i] <> nil do // Multi-Homed 일 경우는 여러개의 IP가 있을 수 있으므로
> begin
> LocalIP := StrPas(inet_ntoa(pptr^[i]^));
> Inc(i);
> end;
> end;}
>
> function TForm1.GetNetworkComputer:string;
> var
> PIDL : PItemIDList;
> DisplayName : array[0..MAX_PATH] of Char;
> BrowseInfo : TBrowseInfo;
> begin
>
> { Get the PItemIDList for CSIDL_NETWORK }
> SHGetSpecialFolderLocation(Handle,
> CSIDL_NETWORK,
> PIDL);
>
> { Fill our TBrowseInfo record }
> BrowseInfo.hwndOwner := Handle;
> BrowseInfo.pidlRoot := PIDL;
> BrowseInfo.pszDisplayName := @DisplayName[0];
> BrowseInfo.lpszTitle := 'Select Network Computer';
> BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
> BrowseInfo.lpfn := nil;
>
> { Display dialogbox according to our TBrowseInfo }
> SHBrowseForFolder(BrowseInfo);
>
> { Return our network computer name }
> Result := DisplayName;
> end;
>
> {...}
>
> {$R *.DFM}
>
> procedure TForm1.Button1Click(Sender: TObject);
> type
> TaPInAddr = array [0..10] of PInAddr;
> PaPInAddr = ^TaPInAddr;
> var
> phe: PHostEnt; // HostEntry 구조체
> pptr: PaPInAddr;
> Buffer:array [0..MAX_PATH] of char;
> i: Integer;
> LocalIP:string;
> tmp:string;
> begin
> LocalIP := '';
>
> showmessage(GetNetworkComputer());
> for i:=1 to length(tmp) do
> buffer[i-1]:=tmp[i];
> GetHostName(buffer, SizeOf(buffer));
> phe := GetHostByName(buffer); // Client의 IP이므로 비동기하지 않았음
> if phe = nil then
> begin
> LocalIP := '127.0.0.1';
> System.Exit;
> end;
>
> pptr := PaPInAddr(Phe^.h_addr_list);
> i := 0;
> while pptr^[i] <> nil do // Multi-Homed 일 경우는 여러개의 IP가 있을 수 있으므로
> begin
> LocalIP := StrPas(inet_ntoa(pptr^[i]^));
> Inc(i);
> end;
> //showmessage(GetNetworkComputer());
> label1.caption:=LocalIP;
> end;
>
> end.
안녕하세요 장일형님...
제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm)의 첫 화면에
있는 "공개 프로그램 소스" 에 보시면
"[공개] 상대방 컴퓨터 이름으로 IP주소 구하기 (반대기능도 가능)" 이 있는데
참고해 보세요
0
0
삭제
수정
댓글
장일형
•
1999.06.24 20:04
김영대님
많은 도움이 되었습니다. 그런데 테스트해보니
같은 작업그룹은 잘 되는데
다른 작업 그룹은 IP를 찾지 못하네요. 방법이 없을까요?
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
문창완
•
1999.04.17 00:42
6
COMMENTS
/
0
LIKES
이미지 라운드 처리에대해?
박지수
•
1999.06.24 18:45
델파이로 탐색기를 실행시킬때 특정 폴더가 열린(선택) 상태로 탐색기를 어떻게 실행 시키죠...>>>
안치봉
•
1999.04.17 01:17
문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
김영대
•
1999.06.24 18:53
박지수 께서 말씀하시기를... > 델파이로 탐색기를 실행시킬때 특정 폴더가 열린(선택) 상태로 > > 탐...
문창완
•
1999.04.17 01:49
안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
안치봉
•
1999.04.17 02:14
문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
문창완
•
1999.04.17 03:07
정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
오세웅
•
1999.06.24 18:44
1
COMMENTS
/
0
LIKES
인스톨 쉴드 질문-한글
이정욱
•
1999.06.24 20:10
인스톨 쉴드안에 잘 보시면 Resource파일이 있습니다. 그것을 리소스 에디터로 열어서 한글로 고치시면 됩...
하윤철
•
1999.06.24 18:08
5
COMMENTS
/
0
LIKES
[하소연]... 이젠 디버깅포인트도 안잡힙니다...-_-
이상훈
•
1999.04.16 23:25
DBProgressBar의 사용방법을 알고싶습니다. 자세히좀 알려주십시오!!!
이정욱
•
1999.06.24 20:05
컴파일을 하실 때 디버깅 인포메이션을 넣지 않아서 그런것 같네요. Project Option에서 Compile탭에서 De...
이정욱
•
1999.04.17 02:38
DBProgressBar라는것은 기본 컴포넌트가 아닌듯 싶습니다. 제 델파이에는 그런것이 없네요..쩝.. 혹시 숨...
이상훈
•
1999.04.17 02:47
이정욱 wrote: > DBProgressBar라는것은 기본 컴포넌트가 아닌듯 싶습니다. > 제 델파이에는 그런것이 없...
이정욱
•
1999.04.17 04:46
네.. 받아서 봤습니다. 쩝.. 안에 Help와 Demo.. 모두가 있네요... 그것을 참고하시면 잘 아실 수 있을것...
장일형
1999.06.24 17:04
0
COMMENTS
/
0
LIKES
델파이에서 word문서 제어는???
홍환민
•
1999.06.24 15:09
4
COMMENTS
/
0
LIKES
Locate()메서드로 다음찾기 구현법.
정남용
•
1999.04.16 01:29
흑흑...이론.. 지금 이것땜시 머리속이 복잡합니다. DBMS를 Informix를 사용했어여... 물론 제작시 컴...
김정선
•
1999.04.23 00:51
저두 같은 문제로 올렸는데 고맙게도 web@ns.nilex.co.kr라는 분이 메일을 보내왔더라구요.. Autoexec.bat...
이정욱
•
1999.04.17 02:26
저도 역시 이런 문제 때문에 고생을 한적이 있었습니다. 전 엑세스 DB를 사용했을때 문제였죠. 그래서 결...
김정선
•
1999.04.16 22:56
저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 전 델파이4.0 오라클 8.0.5버젼을 가지고 ...
김정선
•
1999.04.16 22:54
4
COMMENTS
/
0
LIKES
오라클에서도 같은 문제가..
이종근
•
1999.06.24 12:18
이곳에서 많은 정보를 얻고 있는 초보입니다. DB를 만들고(파라독스)필드중에 금일 실적이 있습니다.(INTE...
김영해
•
1999.04.17 07:38
김정선 wrote: > 저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 > > 전 델파이4.0 오라클...
이주흥
•
1999.06.25 05:16
이종근 께서 말씀하시기를... > 이곳에서 많은 정보를 얻고 있는 초보입니다. > DB를 만들고(파라독스)필...
이정욱
•
1999.04.17 02:28
인스톨쉴드를 너무 믿으면 약간 문제가 있습니다. 델파이 버전에서 BDE포함시 약간의 버그가 있다고 발표...
이용민
1999.06.24 11:25
0
COMMENTS
/
0
LIKES
윈도우의 RAS 를 이용에 관한 질문...
근영이..
1999.04.16 21:59
0
COMMENTS
/
0
LIKES
interbase에서 bitmap불러오는 방법을 ...
이은주
•
1999.04.16 21:26
3
COMMENTS
/
0
LIKES
날짜와 시간을 동시에 입력받는 컴포넌트?
VMNT
•
1999.06.24 10:14
MS-SQL Server를 사용합니다! Stored Procedure를 사용하는데 Select 문에 3개의 파라미터를 사용합니다! ...
이정욱
•
1999.04.17 02:36
컴포넌트를 찾는 방법은 델파이 링커에 가보시면 델파이 수퍼페이지라는 곳이 있습니다. 그곳에는 정말 엄...
신호성
•
1999.06.24 19:43
VMNT 께서 말씀하시기를... > MS-SQL Server를 사용합니다! > Stored Procedure를 사용하는데 Select 문...
하늘
•
1999.04.16 20:24
3
COMMENTS
/
0
LIKES
프로그램 구입할 수 있나요..
dj
•
1999.06.24 08:46
스트링 변수에 내용이 들어 있습니다. 비베에서 처럼 예를들어 'abcdef'의 문자열에서 앞에서 3번째 ...
이정욱
•
1999.04.17 00:47
글쎄요... 광고/홍보란에 한번 써보세요. 하늘 wrote: > 안녕하세요... > 델파이로 만든 가계부 프...
최석기
•
1999.06.24 17:33
dj 께서 말씀하시기를... > 스트링 변수에 내용이 들어 있습니다. > > 비베에서 처럼 > 예를들어 'ab...
박생진
•
1999.06.24 08:04
1
COMMENTS
/
0
LIKES
델파이 그냥 공부해도 되남요 초보가
이정욱
•
1999.06.24 20:07
처음하신다면 조금 오래된 책이지만 '한번 더 생각한 델파이'하는 책이 있습니다. 권용길 님께서 쓰신 책입...
Faster
•
1999.04.15 22:15
1
COMMENTS
/
0
LIKES
[요청]쩝... QuickReport 관련...
김영대
•
1999.04.16 18:42
> Faster wrote: > 출력물(QuickReport)에 대해 자세히 알고 싶습니다. > > 델파이 책중에 QuickReport...
이호선
•
•
1999.04.16 18:17
4
COMMENTS
/
1
LIKES
화면모드에 관하여..
안녕하세요.. 현재 화면모드가 800*600모드의 화면에서 1024*768모드로 변환하였을때 버튼이나 기타 콘트롤들이 변하여진 화면 모드의 좌표로 변경하고자 합니다. 예를들어 800*600에서 버튼이 left:100 right:100이면 1024*768 에선 그에...
장일형
•
1999.06.24 06:16
델초보입니다. LAN으로 상대방 컴퓨터의이름과 IP를 구해야 하는데 팁을 가지고 짜집기했는데 잘 안되네...
안치봉
•
1999.04.16 18:39
이호선 wrote: > 안녕하세요.. > 현재 화면모드가 800*600모드의 화면에서 1024*768모드로 변환하였을때 ...
김영대
•
1999.06.24 18:47
장일형 께서 말씀하시기를... > 델초보입니다. > LAN으로 상대방 컴퓨터의이름과 IP를 구해야 하는데 팁...
장일형
•
1999.06.24 20:04
김영대님 많은 도움이 되었습니다. 그런데 테스트해보니 같은 작업그룹은 잘 되는데 다른 작업 그룹은 I...
하윤철
1999.06.24 04:50
0
COMMENTS
/
0
LIKES
API 함수하나 쓰고나면 변수, 콤포넌트들이 엉망이 됩니다.
이호선
•
1999.04.16 18:01
1
COMMENTS
/
0
LIKES
image를 form크기에 맞게 출력할려면..
안치봉
•
1999.04.16 18:35
이호선 wrote: > 안녕하세요. > 좋은 아침입니다. > image component를 form크기에 맞추어 보여 줄려면 ...
이호선
•
1999.04.16 18:17
4
COMMENTS
/
0
LIKES
화면모드에 관하여..
박성혜
•
1999.06.24 04:47
음 처음으로 다이너믹 어레이를 이용해서 PG를 하고 있습니다. 제생각으론 맞는 것 같은데 자꾸 access vi...
안치봉
•
1999.04.16 18:39
이호선 wrote: > 안녕하세요.. > 현재 화면모드가 800*600모드의 화면에서 1024*768모드로 변환하였을때 ...
신호성
•
1999.06.24 19:45
박성혜 께서 말씀하시기를... > 음 처음으로 다이너믹 어레이를 이용해서 PG를 하고 있습니다. > 제생각...
박성혜
•
1999.06.25 03:21
신호성 께서 말씀하시기를... > 박성혜 께서 말씀하시기를... > > 음 처음으로 다이너믹 어레이를 이용해...
이호선
•
1999.04.16 18:01
3
COMMENTS
/
0
LIKES
image를 form크기에 맞게 출력할려면..
최부열
•
1999.06.24 04:29
인트라넷 환경에서 IP Address 를 누군가가 임의로 바꾸는 바람에 IP Address가 중첩되어 충돌이 나는 데 ...
안치봉
•
1999.04.16 18:35
이호선 wrote: > 안녕하세요. > 좋은 아침입니다. > image component를 form크기에 맞추어 보여 줄려면 ...
김영대
•
1999.06.24 18:49
최부열 께서 말씀하시기를... > 인트라넷 환경에서 IP Address 를 누군가가 임의로 > 바꾸는 바람에 IP A...
디제이
•
1999.06.24 03:33
2
COMMENTS
/
0
LIKES
특수문자제외 문자비교
이재용
•
1999.04.16 10:20
훑ㅍ처とㅍ
신인재
•
1999.06.24 20:16
그런 함수를 함 만들어 보았습니다..... function AlphaReturn(Scr_Text: String) : String; type TA...
오민희
•
1999.06.24 03:32
1
COMMENTS
/
0
LIKES
제발 좀 도와주세요...
신인재
•
1999.06.24 19:59
음..제가 질문을 잘 파악 못한 걸지도 모르겠는데요... stringGrid 의 Options프로퍼티에 goEditing 을 ...
이순희
•
1999.04.16 05:02
2
COMMENTS
/
0
LIKES
테이블에서 time형식에 맞게 입력하는 방법
구창민
•
1999.04.16 07:33
이순희 wrote: > 안녕하세요... 또 질문 올리네요.. > 저번 답변 고마웠습니다.. 그런데.. 근본적인 문제...
bluepine
•
1999.04.17 01:23
구창민 wrote: > 이순희 wrote: > > 안녕하세요... 또 질문 올리네요.. > > 저번 답변 고마웠습니다.. ...
이호선
1999/04/16 18:17
Views
195
Likes
1
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
LAN으로 상대방 컴퓨터의이름과 IP를 구해야 하는데 팁을 가지고 짜집기했는데
잘 안되네요.
아래 소스는 실행은 되지만 선택된 컴퓨터의 IP가 Label1.caption에
나타나야 되는데 안됩니다.
폼에는 버튼과 라벨이 하나씩 있고 uses절에 shlobj를 사용했습니다.)
저는 이걸로 급히 수행해야 되는 일이 있는데
정말 미치겠습니다. 제발 도와주세요. 진짜 급합니다. 흑흑..
unit msg1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,shlobj,Winsock;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetNetworkComputer:String;
end;
var
Form1: TForm1;
implementation
{function LocalIP: string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt; // HostEntry 구조체
pptr: PaPInAddr;
Buffer: array [0..MAX_PATH] of char;
i: Integer;
begin
LocalIP := '';
// GetHostName()은 지금 호스트(PC)의 호스트 이름을 Buffer에 얻어낸다
// 호스트 이름은 0으로 끝나는 문자열이 된다
GetHostName(Buffer, SizeOf(Buffer));
// GetHostByName 함수는 인자에 해당하는 호스트의 이름을 가진 호스트에 대한
// hostent구조에 대한 포인터를 리턴한다.
// GetHostByName 함수는 보통 네트워크 데이터베이스의 hosts파일을 참조하거나,
// 도메인 네임 서버(domain name server)에다 주소에 해당하는 호스트를 찾는
// 메시지를 보내고 그에 대한 응답을 기다린다.
phe := GetHostByName(buffer); // Client의 IP이므로 비동기하지 않았음
if phe = nil then
begin
LocalIP := '127.0.0.1';
System.Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do // Multi-Homed 일 경우는 여러개의 IP가 있을 수 있으므로
begin
LocalIP := StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
end;}
function TForm1.GetNetworkComputer:string;
var
PIDL : PItemIDList;
DisplayName : array[0..MAX_PATH] of Char;
BrowseInfo : TBrowseInfo;
begin
{ Get the PItemIDList for CSIDL_NETWORK }
SHGetSpecialFolderLocation(Handle,
CSIDL_NETWORK,
PIDL);
{ Fill our TBrowseInfo record }
BrowseInfo.hwndOwner := Handle;
BrowseInfo.pidlRoot := PIDL;
BrowseInfo.pszDisplayName := @DisplayName[0];
BrowseInfo.lpszTitle := 'Select Network Computer';
BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
BrowseInfo.lpfn := nil;
{ Display dialogbox according to our TBrowseInfo }
SHBrowseForFolder(BrowseInfo);
{ Return our network computer name }
Result := DisplayName;
end;
{...}
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt; // HostEntry 구조체
pptr: PaPInAddr;
Buffer:array [0..MAX_PATH] of char;
i: Integer;
LocalIP:string;
tmp:string;
begin
LocalIP := '';
showmessage(GetNetworkComputer());
for i:=1 to length(tmp) do
buffer[i-1]:=tmp[i];
GetHostName(buffer, SizeOf(buffer));
phe := GetHostByName(buffer); // Client의 IP이므로 비동기하지 않았음
if phe = nil then
begin
LocalIP := '127.0.0.1';
System.Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do // Multi-Homed 일 경우는 여러개의 IP가 있을 수 있으므로
begin
LocalIP := StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
//showmessage(GetNetworkComputer());
label1.caption:=LocalIP;
end;
end.