AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Dateien an PC's senden und empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien an PC's senden und empfangen

Offene Frage von "Urmel81"
Ein Thema von Urmel81 · begonnen am 17. Nov 2009 · letzter Beitrag vom 18. Nov 2009
Antwort Antwort
uoeb7gp
(Gast)

n/a Beiträge
 
#1

Re: Dateien an PC's senden und empfangen

  Alt 17. Nov 2009, 14:33
Also eine Consolen Application für einen asynchronen Socket kann in etwa so aufgebaut werden.


Delphi-Quellcode:
program AsyncClientConsole;

  {$APPTYPE CONSOLE}

uses
  windows,
  SysUtils,
  messages,
  uConsoleClass in 'uConsoleClass.pas';

function MainWndProc(ahWnd: HWND; auMsg: Integer; wp: WPARAM;
  lp : LPARAM): Integer; stdcall; forward;

const
  WM_DATA = WM_USER + 1;
  WM_CONNECTED = WM_USER + 2;
  WM_ERROR = WM_USER + 3;

var
  Terminated : Boolean;
  hWndMain : HWND;

  TADAMainWindowClass : TWndClass = (style: 0; lpfnWndProc: @MainWndProc;
    cbClsExtra: 0; cbWndExtra: 0; hInstance: 0; hIcon: 0; hCursor: 0;
    hbrBackground: 0; lpszMenuName: nil; lpszClassName: 'MyConsoleMainWindowClass'
    );

procedure WMOnConnected(wp, lp: DWORD);
begin
  writeln('WMOnConnected : ' + PChar(wp));
end;

procedure WMOnData(wp, lp: DWORD);
begin
  writeln(PChar(wp));
  writeln(inttostr(lp));
end;

procedure WMOnError(wp, lp: DWORD);
begin
  writeln('WMOnECSError : ' + PChar(wp));
end;

function MainWndProc(ahWnd: HWND; auMsg: Integer; wp: WPARAM;
  lp: LPARAM): Integer; stdcall;
begin
  Result := 0;

  if auMsg = WM_DATA then
    WMOnData(wp, lp)
  else if auMsg = WM_CONNECTED then
    WMOnConnected(wp, lp)
  else if auMsg = WM_ERROR then
    WMOnError(wp, lp)
  else if auMsg = WM_CLOSE then
    DestroyWindow(ahWnd)
  else
    Result := DefWindowProc(ahWnd, auMsg, wp, lp);

end;

function InitAplication : Boolean;
begin
  Result := FALSE;

  if Windows.RegisterClass(TADAMainWindowClass) = 0 then Exit;

  hWndMain := CreateWindowEx(WS_EX_TOOLWINDOW, TADAMainWindowClass.lpszClassName,
    '', WS_POPUP, 0, 0, 0, 0, 0, 0, HInstance, nil);

  if hWndMain = 0 then Exit;

  (******** Hier nun Socket Connection durchführen und
    Messaging mit Windowsmessages und oder mit Callback, je nach Geschmack
  ********)


  Result := TRUE;
end;


procedure CleanupAplication;
begin
  if hWndMain <> 0 then begin
    DestroyWindow(hWndMain);
    hWndMain := 0;
  end;
end;

procedure RunAplication;
var
  MsgRec : TMsg;
begin
  while GetMessage(MsgRec, 0, 0, 0) do begin
    TranslateMessage(MsgRec);
    DispatchMessage(MsgRec)
  end;
  Terminated := TRUE;
end;

begin
  InitAplication;
  try
    RunAplication;
  finally
    CleanupAplication;
  end;
end.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz