C샵 2020. 4. 13. 18:42

// 상단에 using지시문 추가
using WinHttp; // 오류가 뜰 경우 참고 추가로 winhttp.dll 추가하시면 됩니다.
// 추가 방법은 찾아보기 - C:\windows\System32 에서 저 winhttp 검색하시면 됩니다. (32비트 기준)
 
// 네이버 계정 및 카페 인증
bool NaverLogin(string ID, string PW)
        {
            WinHttpRequest WinHttp = new WinHttpRequest();
            WinHttp.Open("POST", "https://nid.naver.com/nidlogin.login", false);
            WinHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            WinHttp.SetRequestHeader("Referer", "https://nid.naver.com/nidlogin.login");
            WinHttp.Send("enctp=2&url=http://www.naver.com&enc_url=http://www.naver.com&postDataKey=&saveID=0&nvme=0&smart_level=1&id=" + ID + "&pw=" + PW);
            WinHttp.WaitForResponse();
            WinHttp.Open("GET", "http://cafe.naver.com/"); // 해당 카페 주소 입력
            WinHttp.Send("");
            WinHttp.WaitForResponse();
            string result = Encoding.Default.GetString(WinHttp.ResponseBody);
            if (result.IndexOf("카페멤버") == -1) // 이건 WinHttp.ResponseText.IndexOf("카페멤버") 이렇게 사용하면 오류가 뜨더라구요
            {
                return false; // 카페 가입이 되어있으면 저 "카페멤버" 라는 글자가 표시되지 않습니다.
            }
            else
            {
                return true; // 카페 가입이 되어있지않으면 저 "카페멤버" 라는 글자가 표시됩니다.
            }
        }
 
이렇게 하시고 버튼 이벤트에
 
// NaverLogin 이 false 값일 경우 (가입 되어있을 경우)
// NaverLogin 이 true 값일 경우 (가입 되어있지 않을 경우)
 if (NaverLogin(textBox1.Text, textBox2.Text) == false)
            {
                // false 값이면 성공
                MessageBox.Show("네이버 인증에 성공하였습니다.", "성공!", MessageBoxButtons.OK);
            }
            else
            {
                // true 값이면 실패
                MessageBox.Show("네이버 인증에 실패하였습니다.", "실패!", MessageBoxButtons.OK);
            }

'C샵' 카테고리의 다른 글

[C#] C# 데이터 타입 배워보기 (종류)  (1) 2020.04.16
[C#] C#의 버전 알아보자  (0) 2020.04.16
[C#] C#이란 무엇일까? 기초알아보기 (1)  (0) 2020.04.16
[C#] TXT 불러오기 소스  (0) 2020.04.13
posted by 핵커 커뮤니티
:
C언어 2020. 4. 13. 18:38

기본적인 C언어란 프로그래밍 언어이다.

컴퓨터와의 대화에 사용하기 위해 일종의 의사소통이다.

ex) 한국인 영어> 통역사(컴퓨터 본체) > 일본인
ex) > 한국말 영어> 통역사 > 일본말 > 일본인
이런식으로 가능한 조건이 C언어이다.
하지만 컴퓨터에서는 의사소통이 불가능이므로  C언어로 의사소통 할수있다.
ex) 한국어 C언어 > 컴파일러(C언어 기계어) > 컴퓨터
*컴파일러이란? > 프로그래밍 언어로 작성한 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역하는역할을합니다. (Compile)
*기계어란? 컴퓨터가 이해할 수 있도록 0과1로 구성된 언어체계입니다.

posted by 핵커 커뮤니티
:
DelPhi 2020. 4. 12. 13:56

// 컴포넌트를 Install 한다음 Samples 디렉토리에 가서

// EditButton 을 한번 시험해 보는 것도 재미 있을듯..

unit ButtonEdit;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TButtonEdit = class(TEdit)

private

//FCanvas: TCanvas; //commented out - see below!

//do you want to 'click' when the up or down arrow key pressed as well?

FClickOnArrow: boolean;

//do you want to 'click' when the Return key pressed as well?

FClickOnReturn: boolean;

//flag - is the button pressed or not

FPressed: boolean;

procedure Click; override;

procedure CreateWnd; override;

procedure WMPAINT(var Message: TMessage); message WM_PAINT;

procedure WMLBUTTONDOWN(var Message: TWMMouse); message WM_LBUTTONDOWN;

procedure WMLBUTTONUP(var Message: TWMMouse); message WM_LBUTTONUP;

procedure WMMOUSEMOVE(var Message: TWMMouse); message WM_MOUSEMOVE;

//procedure WMSETFOCUS(var Message: TMessage); message WM_SETFOCUS;

protected

procedure KeyDown(var Key: Word; Shift: TShiftState); override;

public

constructor Create(AOwner: TComponent); override;

published

property ClickOnArrow: boolean read FClickOnArrow write FClickOnArrow;

property ClickOnReturn: boolean read FClickOnReturn write FClickOnReturn;

end;

procedure Register;

implementation

const

BUTTONWIDTH = 17;

{----------------------------------------------------------------------}

{----------------------------------------------------------------------}

procedure Register;

begin

RegisterComponents('Samples', [TButtonEdit]);

end;

{----------------------------------------------------------------------}

constructor TButtonEdit.Create(AOwner: TComponent);

begin

inherited Create(AOwner);

FPressed := false;

FClickOnArrow := true;

FClickOnReturn := false;

end;

{----------------------------------------------------------------------}

procedure TButtonEdit.CreateWnd;

begin

inherited CreateWnd;

//this is crucial to stop text disappearing under the button...

perform(EM_SETMARGINS,EC_RIGHTMARGIN,(BUTTONWIDTH+2) shl 16);

end;

{----------------------------------------------------------------------}

procedure TButtonEdit.WMLBUTTONDOWN(var Message: TWMMouse);

begin

inherited;

//draw button in pressed state...

if message.xpos >= clientwidth-BUTTONWIDTH+1 then begin

FPressed := true;

Refresh;

end;

end;

{----------------------------------------------------------------------}

procedure TButtonEdit.WMLBUTTONUP(var Message: TWMMouse);

begin

inherited;

//draw button in non-pressed state...

if FPressed then begin

FPressed := false;

Refresh;

end;

end;

{----------------------------------------------------------------------}

procedure TButtonEdit.WMMOUSEMOVE(var Message: TWMMouse);

begin

inherited;

//change cursor when over the button to an arrow (not the default I-beam)...

if message.xpos >= clientwidth-BUTTONWIDTH+1 then cursor := crArrow

else cursor := crDefault;

end;

{----------------------------------------------------------------------}

procedure TButtonEdit.Click;

var

pt: TPoint;

begin

//fix a minor cosmetic problem...

if FPressed then begin

FPressed := false;

Repaint;

end;

//Only process an OnClick method if the button is clicked,

//NOT if the text is clicked!

GetCursorPos(pt);

if PtInRect(Rect(clientwidth-BUTTONWIDTH+1,0,clientwidth,clientheight),

ScreenToClient(pt)) then inherited Click;

end;

{----------------------------------------------------------------------}

procedure TButtonEdit.KeyDown(var Key: Word; Shift: TShiftState);

begin

//respond to up or down arrow keys or Return key with OnClick event if

//"ClickOnArrow" or "ClickOnReturn" property set...

inherited KeyDown(Key, Shift);

if ((Key = vk_Down) or (Key = vk_Up))

and (Shift = []) and FClickOnArrow then begin

Key := 0;

inherited Click;

end

else if (Key = vk_return) and FClickOnReturn then begin

Key := 0;

inherited Click;

end;

end;

{----------------------------------------------------------------------}

//This no longer seems to be necessary ... I've left it here just in case!

{procedure TButtonEdit.WMSETFOCUS(var Message: TMessage);

begin

inherited;

repaint;

end;}

{----------------------------------------------------------------------}

procedure TButtonEdit.WMPAINT(var Message: TMessage);

var

dc: HDC;

CntrPt: TPoint;

pic: array [0..3] of TPoint; //arrow 'picture' points

begin

// let windows draw the text!

// I don't really want to struggle with all the scrolling issues etc!

inherited;

//NOW DRAW THE BUTTON ... (not as bad as it looks if you take out the comments!)

//find the centre of the button...

CntrPt := point(clientwidth - BUTTONWIDTH div 2, clientheight div 2);

//offset CntrPt by 1 if pressed...

if FPressed then CntrPt := point(CntrPt.x+1,CntrPt.y+1);

//get button arrow drawing coordinates from CntrPt...

pic[0] := point( CntrPt.x-5,CntrPt.y);

pic[1] := point( CntrPt.x,CntrPt.y-5);

pic[2] := point( CntrPt.x+5, CntrPt.y);

pic[3] := point( CntrPt.x, CntrPt.y+5);

//Notes:

//1. As I'm calling the inherited WMPAINT method before drawing the button -

// I have to use getDC(handle) instead of beginpaint(handle,paintstruct)

// otherwise I don't see the button! (I think due to clipping.)

//2. If I wanted to draw the text as well as the button (without calling

// the inherited method) then I would have to use beginpaint(handle,paintstruct).

dc := getDC(handle);

//To make this method a little more efficient you could add a private Canvas field

// to the component and create it once only in TButtonEdit.create and free it in

//TButtonEdit.destroy. I've kept it all here for simplicity.

//(Don't use TControlCanvas instead of TCanvas in TButtonEdit.create -

//It doesn't work! - Someone might explain TControlCanvas to me.)

with TCanvas.create do begin

Handle := dc;

Brush.Color := clBtnFace;

//Brush.style := bsSolid;

//paint the button surface...

FillRect(rect(clientwidth-BUTTONWIDTH+1,0,clientwidth,clientheight));

//draw the button edges...

if FPressed then Pen.color := clBtnShadow else Pen.color := clBtnHighlight;

Moveto(clientwidth-BUTTONWIDTH+2,clientheight-1);

Lineto(clientwidth-BUTTONWIDTH+2,1);

Lineto(clientwidth-1,1);

if FPressed then Pen.color := clBtnHighlight else Pen.color := clBtnShadow;

Lineto(clientwidth-1,clientheight-1);

Lineto(clientwidth-BUTTONWIDTH+2,clientheight-1);

//draw the arrows...

Brush.Color := clGreen;

Pen.color := clBlack;

polygon(pic);

Pen.color := clBtnFace;

Moveto(CntrPt.x-5,CntrPt.y);

Lineto(CntrPt.x+6,CntrPt.y);

Handle := 0;

free; //the canvas.

end;

ReleaseDC(handle,dc);

end;

{----------------------------------------------------------------------}

(*

//Old WMPAINT Method (not using TCanvas)...

procedure TButtonEdit.WMPAINT(var Message: TMessage);

var

dc: HDC;

SilverBrush, ArrowBrush, Oldbrush: HBrush;

WhitePen, GrayPen, SilverPen, OldPen: HPen;

CntrPt: TPoint;

pic: array [0..3] of TPoint; // for arrow 'picture'.

begin

inherited;

//NOW DRAW BUTTON ...

//find the centre of the button...

CntrPt := point(clientwidth - BUTTONWIDTH div 2, clientheight div 2);

//offset by 1 if pressed...

if FPressed then CntrPt := point(CntrPt.x+1,CntrPt.y+1);

//get button arrow coordinates...

pic[0] := point( CntrPt.x-5,CntrPt.y);

pic[1] := point( CntrPt.x,CntrPt.y-5);

pic[2] := point( CntrPt.x+5, CntrPt.y);

pic[3] := point( CntrPt.x, CntrPt.y+5);

//create handles ...

dc := getDC(handle);

SilverBrush := CreateSolidBrush(GetSysColor(COLOR_BTNFACE));

ArrowBrush := CreateSolidBrush(clGreen);

WhitePen := CreatePen(PS_SOLID,1,clWhite);

GrayPen := CreatePen(PS_SOLID,1,clGray);

SilverPen := CreatePen(PS_SOLID,1,GetSysColor(COLOR_BTNFACE));

//draw button surface and outline...

OldBrush := SelectObject(dc, ArrowBrush);

FillRect(dc,rect(clientwidth-BUTTONWIDTH+1,0,clientwidth,clientheight),SilverBrush);

if FPressed then OldPen := SelectObject(dc,GrayPen)

else OldPen := SelectObject(dc,WhitePen);

MovetoEx(dc,clientwidth-BUTTONWIDTH+2,clientheight-1,nil);

Lineto(dc,clientwidth-BUTTONWIDTH+2,1);

Lineto(dc,clientwidth-1,1);

if FPressed then SelectObject(dc,WhitePen)

else SelectObject(dc,GrayPen);

Lineto(dc,clientwidth-1,clientheight-1);

Lineto(dc,clientwidth-BUTTONWIDTH+2,clientheight-1);

//draw up&down arrows...

SelectObject(dc,OldPen);

polygon(dc,pic,4);

SelectObject(dc,SilverPen);

MovetoEx(dc,CntrPt.x-5,CntrPt.y,nil);

Lineto(dc,CntrPt.x+6,CntrPt.y);

//clean up ...

SelectObject(dc,OldPen);

SelectObject(dc, OldBrush);

DeleteObject(WhitePen);

DeleteObject(SilverPen);

DeleteObject(GrayPen);

DeleteObject(SilverBrush);

DeleteObject(ArrowBrush);

ReleaseDC(handle,dc);

end;

*)

{----------------------------------------------------------------------}

end.

posted by 핵커 커뮤니티
:
DelPhi 2020. 4. 12. 13:50

//랜덤 문자 만들기
function random_string($len) {
 $str = '1234567890abcdefghijklmnopqrstuvwxyz';
 $strlen = strlen($str) -1;
 $return = '';
 for ($i = 0; $i < $len; $i++) {
  $rand = rand(0, $strlen);
  $return .= $str[$rand];
 }
 return $return;
}

posted by 핵커 커뮤니티
:
DelPhi 2020. 4. 12. 13:29

< 델파이 단축키 모음 >

[찾기]

Ctrl + F Find

Ctrl + R Find and Replace

F3 Search Again

[화면이동]

F11 View Object Inspector

F12 Toggle Form/Unit

Alt + 0 View Window List

Ctrl + F12 View Unit

Shift + F12 View Form

Ctrl + PgUp/PgDown CodeEditor에서 현재페이지의 첫줄(PgUp), 마지막줄(PgDown)로 이동

[컴파일/실행]

Ctrl + F9 Compile

F9 Run

F7 Trace Into

F8 Trace Over

F5 Set Breakpoint

Ctrl + F5 Add Watch

Ctrl + F7 Evaluate/Modify

[블록관련]

Ctrl + Shift + U Unindent

Ctrl + Shift + I Indent

Ctrl + O, C Column Block Mode (또는 Alt키를 누른상태에서 Mouse를 드래그 해

도 컬럼블럭 설정이 가능, Shift + Alt + Arrow Key 를 사용해도 컬

럼블럭 설정)

Ctrl + O, K Line Block Mode

[키 매크로]

Ctrl + Shift + R Record

* 키매크로 작성순서 : <Ctrl+Shift+R> -> <원하는키> -> <Ctrl+Shift+R>

Ctrl + Shift + P Play

[Object Inpector]

Ctrl + Down Object Inpector 상단의 Object List ComboBox 열기

이 상태에서 Component Name을 키보드로 치면 Incremental Search 기

능Tab Property 와 Property Value 부분을 전환가능하며,

Property 쪽에 Cursor 가 위치한 상태에서 키보드를 치면

Incremental Search

[Code Insight]

Ctrl + Space Code Completion 기능

Ctrl + J Code Template 기능

Ctrl + Shift + Up/Down Object 의 Member function/procedure 의 선언부와 구현부를

이동

Ctrl + Shift + C Object 의 Member function/procedure 의 선언부와 구현부중

의 한가지를 코딩 한후 누르게 되면 나머지 선언부 또는 구

현부를 완성시켜줌

[기타]

Alt + F10 현재 위치에서 Popup-Menu 띄우기

Ctrl + Enter Code Editor 에서 현재위치의 단어로 File Open을 시도(기본 확장자

는 .pas) 하고 현재 Path 에서 그 파일을 찾지 못하면 File Open

Dialog를 띄움.

Alt + { or } Find Matching Brace( ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘, ‘]’ 

 

posted by 핵커 커뮤니티
:
DelPhi 2020. 4. 12. 13:28

type

TArrayScan = record

ScanArray: STring;

Start: DWORD;

Finish: DWORD;

end;

Function GetMask(Array_of_bytes: String): String;

var

x, y: integer;

St: string;

Mask: string;

begin

St := StringReplace(Array_of_bytes, ' ', '', [rfReplaceAll]);

y := 1;

for x := 1 to (Length(St) div 2) do

begin

if (St[y] + St[y + 1]) <> '??' then

begin

Mask := Mask + 'O';

y := y + 2;

end else

begin

Mask := Mask + 'X';

y := y + 2;

end;

end;

Result := Mask;

end;

Procedure StringToArrayByte(Str: string; var Buffer: array of byte);

var

x, y, z: integer;

St: string;

begin

St := StringReplace(Str, ' ', '', [rfReplaceAll]);

y := 1;

for x := 0 to Length(St) div 2 - 1 do

begin

if St[y] + St[y + 1] <> '??' then

begin

Buffer[x] := StrToInt('$' + St[y] + St[y + 1]);

y := y + 2;

end else

begin

Buffer[x] := $00;

y := y + 2;

end;

end;

end;

Function CompareArray(DestAddress:DWORD ;CONST Dest: Array of byte; Source: array of byte;

ALength: integer; Mask: String; var ReTurn : TStringList) : Boolean;

var

x, y: integer;

a, b, c: integer;

begin

for x := 0 to Length(Dest) - Length(Source) do

begin

a:=0;

for y := 0 to Length(Source) - 1 do

begin

if (Dest[x + y] = Source[y]) or (Mask[Y+1] = 'X') then

begin

if y = (Length(Source) - 1) then

begin

Return.Add(IntToHex(DestAddress+x,8));

end;

end else

begin

Break;

end;

end;

end;

Result := True;

end;

Function ArrayScan(Struct: TArrayScan): TStringList;

var

ArrayStruct: TArrayScan;

mbi: Memory_Basic_Information;

StartAdr: DWORD;

FinishAdr: DWORD;

Mask: string;

Str : STring;

Buffer: array of byte;

ScanBuffer: array of byte;

data : COPYDATASTRUCT;

reTurn: TStringList;

begin

//

Str := StringReplace(Struct.ScanArray,' ','',[rfReplaceAll]);

StartAdr := Struct.Start;

FinishAdr := Struct.Finish;

Mask := GetMask(Str);

SetLength(ScanBuffer, Length(Str) div 2);

StringToArrayByte(Str, ScanBuffer);

reTurn := TStringList.Create;

while StartAdr <= FinishAdr - $10 do

begin

VirtualQueryEx(HandleWindow, PDWORD(StartAdr), mbi, sizeof(mbi));

if ((Mbi.RegionSize > 0) and

((Mbi.Type_9 = MEM_PRIVATE) or (Mbi.Type_9 = MEM_IMAGE)) and

(Mbi.State = MEM_COMMIT) and

((Mbi.Protect = PAGE_READONLY) or

(Mbi.Protect = PAGE_READWRITE) or

(Mbi.Protect = PAGE_WRITECOPY) or

(Mbi.Protect = PAGE_EXECUTE) or

(Mbi.Protect = PAGE_EXECUTE_READ) or

(Mbi.Protect = PAGE_EXECUTE_READWRITE) or

(Mbi.Protect = PAGE_EXECUTE_WRITECOPY) )) then

begin

SetLength(Buffer, 0);

SetLength(Buffer, mbi.RegionSize);

ReadProcessMemory(HandleWindow, mbi.BaseAddress, @Buffer[0],mbi.RegionSize, buf);

CompareArray(DWORD(mbi.BaseAddress),Buffer,ScanBuffer,Length(ScanBuffer),Mask,reTurn);

StartAdr := DWORD(MBI.BaseAddress) + MBI.RegionSize;

end else

begin

StartAdr := DWORD(MBI.BaseAddress) + MBI.RegionSize;

end;

end;

data.dwData := 4;

data.cbData := SizeOf(reTurn);

data.lpData := @reTurn;

Result := reTurn;

end;

posted by 핵커 커뮤니티
:
DelPhi 2020. 4. 11. 13:50

Delphi.7.Second.Edition.v7.2.vol1.egg
10.00MB
Delphi.7.Second.Edition.v7.2.vol2.egg
10.00MB
Delphi.7.Second.Edition.v7.2.vol3.egg
10.00MB
Delphi.7.Second.Edition.v7.2.vol4.egg
10.00MB
Delphi.7.Second.Edition.v7.2.vol5.egg
2.05MB

posted by 핵커 커뮤니티
:
JAVA 2020. 4. 11. 13:46

사이트주소: https://www.java.com/ko/

'JAVA' 카테고리의 다른 글

[JAVA] 간단한 쓰레드  (0) 2020.04.15
posted by 핵커 커뮤니티
: