function GetErrorMsg: string;
procedure MakeError(Session: TDolibSession; Error: DWORD);
procedure DOLIB_LOGIN(Proxy: string; Port: Integer; ID: string; Pass: string);
+ procedure ForcedDOLIB_LOGIN(Proxy: string; Port: Integer; ID: string; Pass: string);
public
constructor Create;
destructor Destroy; override;
function Connect: boolean;
+ function ForcedConnect: boolean; //2003/12/20\82Ü\82Å\82ÌSSL\8fá\8aQ\97p\8b\90§\83\8d\83O\83C\83\93\81i12/21\88È\8d~\82È\82ç\92Ê\8fí\83\8d\83O\83C\83\93\81j
function Disconnect: boolean;
property ProxyAddress: string read FProxyAddress write FProxyAddress;
property ProxyPort: integer read FProxyPort write FProxyPort;
end;
end;
end;
+function TDolib.ForcedConnect: boolean; //2003/12/20\82Ü\82Å\82ÌSSL\8fá\8aQ\97p\8b\90§\83\8d\83O\83C\83\93\81i12/21\88È\8d~\82È\82ç\92Ê\8fí\83\8d\83O\83C\83\93\81j
+begin
+ Result := False;
+ if not Connected then begin
+ ForcedDOLIB_LOGIN(FProxyAddress, FProxyPort, FUserName, FPassword);
+ Result := True;
+ end;
+end;
function TDolib.Disconnect: boolean;
begin
InternetCloseHandle(hSession);
end;
end;
+//2003/12/20\82Ü\82Å\82ÌSSL\8fá\8aQ\97p\8b\90§\83\8d\83O\83C\83\93\81i12/21\88È\8d~\82È\82ç\92Ê\8fí\83\8d\83O\83C\83\93\81j
+procedure TDolib.ForcedDOLIB_LOGIN(Proxy: string; Port: Integer; ID: string; Pass: string);
+var
+ hSession: HINTERNET;
+ hConnect: HINTERNET;
+ hRequest: HINTERNET;
+ ProxyHostPort: string;
+ Buf: array[0..4096] of Char;
+ UserInfo: string;
+ UserAgent: string;
+ cb: DWORD;
+ Delim: Integer;
+begin
+ FSession := TDolibSession.Create;
+
+ if Proxy <> '' then begin
+ ProxyHostPort := Format('%s:%d', [Proxy, Port]);
+ hSession := InternetOpen(DOLIB_LOGIN_UA, INTERNET_OPEN_TYPE_PROXY, PChar(ProxyHostPort), '', 0);
+ end else begin
+ hSession := InternetOpen(DOLIB_LOGIN_UA, INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
+ end;
+ if not Assigned(hSession) then
+ MakeError(FSession, GetLastError())
+ else begin
+ hConnect := InternetConnect(hSession, DOLIB_LOGIN_HOST,
+ INTERNET_DEFAULT_HTTPS_PORT, nil, nil,
+ INTERNET_SERVICE_HTTP, INTERNET_FLAG_SECURE, 0);
+ if not Assigned(hConnect) then
+ MakeError(FSession, GetLastError())
+ else begin
+ hRequest := HttpOpenRequest(hConnect, 'POST', DOLIB_LOGIN_URL,
+ nil, nil, nil,
+ INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_NO_COOKIES or
+ INTERNET_FLAG_NO_UI or INTERNET_FLAG_SECURE, 0);
+ if not Assigned(hRequest) then
+ MakeError(FSession, GetLastError())
+ else begin
+ UserInfo := Format('ID=%s&PW=%s', [ID, Pass]);
+ UserAgent := Format('%s %s', [DOLIB_2CH_UA, ClientUA]) + #13#10;
+ HttpSendRequest(hRequest, PChar(UserAgent), DWORD(-1), PChar(UserInfo), Length(UserInfo));
+ if not InternetReadFile(hRequest, @Buf, SizeOf(Buf), cb) then
+ MakeError(FSession, GetLastError())
+ else if (cb < 11) or (Pos('SESSION-ID=', Buf) <> 1) then
+ MakeError(FSession, ERROR_INVALID_DATA)
+ else begin
+ if Buf[cb - 1] = #10 then
+ Buf[cb - 1] := #0;
+ FSession.SessionID := Copy(Buf, 12, cb);
+ if FSession.SessionID = '' then
+ MakeError(FSession, ERROR_NOT_ENOUGH_MEMORY);
+ Delim := Pos(':', Buf);
+ if Delim = 0 then
+ MakeError(FSession, ERROR_INVALID_DATA)
+ else begin
+ FSession.UserAgent := Copy(Buf, 12, Delim - 12);
+ if FSession.UserAgent = '' then
+ MakeError(FSession, ERROR_NOT_ENOUGH_MEMORY);
+ end;
+ end;
+ InternetCloseHandle(hRequest);
+ end;
+ InternetCloseHandle(hConnect);
+ end;
+ InternetCloseHandle(hSession);
+ end;
+end;
end.
SHDocVw_TLB,
MSHTML_TLB,
{$IFEND}
- IdHTTP, ActiveX, Clipbrd, Buttons, ToolWin, {HTTPApp,} YofUtils, IdComponent,
- ShellAPI, ImgList, ActnList, UrlMon, Tabs, IdGlobal, StrUtils,
+ IdHTTP, ActiveX, ActnList, ImgList,
+ ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
+ ShellAPI, UrlMon, Tabs, IdGlobal, StrUtils,
CommCtrl, IniFiles, Dialogs,
GikoSystem, GikoUtil, Setting, BoardGroup, ThreadControl, ItemDownload,
Editor, RoundData, RoundName, KeySetting, GikoPanel, Favorite, FavoriteAdd,
N24: TMenuItem;
N62: TMenuItem;
N61: TMenuItem;
+ N63: TMenuItem;
+ KoreCopy: TAction;
+ N64: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure CabinetPanelHide(Sender: TObject);
procedure NG1Click(Sender: TObject);
procedure SelectResActionExecute(Sender: TObject);
procedure SelectResActionUpdate(Sender: TObject);
- procedure FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure AllResActionExecute(Sender: TObject);
procedure UpBoardActionUpdate(Sender: TObject);
procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
+ procedure KoreCopyExecute(Sender: TObject);
private
{ Private \90é\8c¾ }
//RoundList : TRoundList;
uses
About, Option, Round, Splash, Sort, ListSelect,
- NewBoard, MojuUtils;
+ NewBoard, MojuUtils,Clipbrd;
const
CAPTION_NAME: string = '\83M\83R\83i\83r';
procedure TGikoForm.LoginActionExecute(Sender: TObject);
var
TmpCursor: TCursor;
+ LimitDay: TDateTime;
+ Today: TDateTime;
begin
+ LimitDay := EncodeDate( 2003, 12, 21);
+ Today := Date;
if GikoSys.Dolib.Connected then begin
//\83\8d\83O\83A\83E\83g
GikoSys.Dolib.Disconnect;
TmpCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
- GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
- GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
- GikoSys.Dolib.Password := GikoSys.Setting.Password;
- if GikoSys.Setting.ReadProxy then begin
- GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
- GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
- end else begin
- GikoSys.Dolib.ProxyAddress := '';
- GikoSys.Dolib.ProxyPort := 0;
- end;
- if GikoSys.Dolib.Connect then begin
- LoginAction.Checked := True;
- AddMessageList('\83\8d\83O\83C\83\93\82µ\82Ü\82µ\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
- LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
- end else begin
- // MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
- AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
- PlaySound('Error');
- LoginAction.Checked := False;
- LoginToolButton.Down := False;
- end;
+ //2003/12/20\82Ü\82Å\82ÌSSL\8fá\8aQ\97p\8b\90§\83\8d\83O\83C\83\93\81i12/21\88È\8d~\82È\82ç\92Ê\8fí\83\8d\83O\83C\83\93\81j
+ if CompareDate( LimitDay, Today ) = -1 then begin
+ GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
+ GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
+ GikoSys.Dolib.Password := GikoSys.Setting.Password;
+ if GikoSys.Setting.ReadProxy then begin
+ GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
+ GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
+ end else begin
+ GikoSys.Dolib.ProxyAddress := '';
+ GikoSys.Dolib.ProxyPort := 0;
+ end;
+ if GikoSys.Dolib.Connect then begin
+ LoginAction.Checked := True;
+ AddMessageList('\83\8d\83O\83C\83\93\82µ\82Ü\82µ\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
+ LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
+ end else begin
+ // MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
+ AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
+ PlaySound('Error');
+ LoginAction.Checked := False;
+ LoginToolButton.Down := False;
+ end;
+ end else begin
+ GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
+ GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
+ GikoSys.Dolib.Password := GikoSys.Setting.Password;
+ if GikoSys.Setting.ReadProxy then begin
+ GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
+ GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
+ end else begin
+ GikoSys.Dolib.ProxyAddress := '';
+ GikoSys.Dolib.ProxyPort := 0;
+ end;
+ //2003/12/20\82Ü\82Å\82ÌSSL\8fá\8aQ\97p\8b\90§\83\8d\83O\83C\83\93\81i12/21\88È\8d~\82È\82ç\92Ê\8fí\83\8d\83O\83C\83\93\81j
+ GikoSys.Dolib.ForcedConnect;
+ if GikoSys.Dolib.Connect then begin
+ LoginAction.Checked := True;
+ AddMessageList('\8b\90§\83\8d\83O\83C\83\93\82µ\82Ü\82µ\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
+ LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
+ end else begin
+ // MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
+ AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
+ PlaySound('Error');
+ LoginAction.Checked := False;
+ LoginToolButton.Down := False;
+ end;
+ end;
finally
Screen.Cursor := TmpCursor;
end;
i, bi : Integer;
boardURL : string;
tmpThread : TThreadItem;
- category : TCategory;
- categoryNode : TTreeNode;
- boardNode : TTreeNode;
+// category : TCategory;
+// categoryNode : TTreeNode;
+// boardNode : TTreeNode;
shiftDown : Boolean;
ctrlDown : Boolean;
begin
Body := CustomStringReplace(Body, '"', '"');
Body := CustomStringReplace(Body, '&', '&');
Body := CustomStringReplace(Body, ' ', ' ');
-
+
FHint.Add(Header, Body);
FHint.Title := '';
end;
SelectResAction.Enabled := GetActiveContent <> nil;
end;
-procedure TGikoForm.FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
-
-//var
-begin
-{
- ThreadItem := GetActiveContent;
- if ThreadItem <> nil then begin
- if ssCtrl in Shift then begin
- if ssAlt in Shift then begin
- Doc := Browser.Document as IHtmlDocument2;
- s := IntToStr(Fkeynum);
- if GikoSys.IsNumeric(s) then begin
- ThreadItem := GetActiveContent;
- if ThreadItem <> nil then begin
- Num := StrToInt(s);
- FHint.PopupType := gptThread;
- SetResPopupText(ThreadItem, Num, Num, False, False);
- if FHint.ResCount <> 0 then begin
- ShowTextPopup;
- end;
- end;
- end;
- Fkeynum := 0;
- end else begin
- if Fkeynum = 0 then begin
- if (Key >= $60) and (Key <= $69) then begin
- Fkeynum := Key - $60;
- end;
- end else begin
- if (Key >= $60) and (Key <= $69) then begin
- Fkeynum := Fkeynum * 10 + Key - $60;
- end;
- end;
- end;
- end else begin
- Fkeynum := 0;
- if FHint <> nil then begin
- FHint.ReleaseHandle;
- FHint.ClearAllRes;
- end;
- end;
- end;
-}
-end;
-
-
procedure TGikoForm.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
-{
- if Key = $11 then begin
- Fkeynum := 0;
- if FHint <> nil then begin
- FHint.ReleaseHandle;
- FHint.ClearAllRes;
- end;
-
- end;
-}
end;
// \91S\82Ä\82Ì\83\8c\83X\82ð\95\\8e¦
end;
+procedure TGikoForm.KoreCopyExecute(Sender: TObject);
+var
+ ThreadItem: TThreadItem;
+ Number: Integer;
+ msg : PChar;
+ i: Integer;
+ tmp: string;
+ FileName: string;
+ Line: Integer;
+
+ wkInt: Integer;
+
+ Res: TResRec;
+ Header: string;
+ Body: string;
+ boardPlugIn : TBoardPlugIn;
+begin
+ Number := KokoPopupMenu.Tag;
+ if Number = 0 then Exit;
+ ThreadItem := GetActiveContent;
+
+ if ThreadItem <> nil then begin
+ if ThreadItem.IsBoardPlugInAvailable then begin
+ //===== \83v\83\89\83O\83C\83\93\82É\82æ\82é\95\\8e¦
+ boardPlugIn := ThreadItem.BoardPlugIn;
+
+ // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
+ // \95¶\8e\9a\83R\81[\83h\82Í\83v\83\89\83O\83C\83\93\82É\94C\82¹\82é
+ //\82±\82±\82Å\82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\82Ì\8c`\8e®\82Å\82P\8ds\93Ç\82Ý\8d\9e\82ß\82ê\82Î¥¥¥\81B
+ tmp := boardPlugIn.GetDat( DWORD( threadItem ), Number );
+ end else begin
+ FileName := ThreadItem.FilePath;
+ tmp := GikoSys.ReadThreadFile(FileName, Number);
+ end;
+ if tmp <> '' then begin
+ Res := GikoSys.DivideStrLine(tmp);
+
+ Header := IntToStr(Number) + ' \81F' + Res.FName + '\81F' + Res.FDateTime + #10;
+
+ Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
+ Body := CustomStringReplace(Body, '<br>', #10,true);
+ Body := CustomStringReplace(Body, '</a>', '',true);
+ Body := GikoSys.DeleteLink(Body);
+ Body := CustomStringReplace(Body, '<', '<');
+ Body := CustomStringReplace(Body, '>', '>');
+ Body := CustomStringReplace(Body, '"', '"');
+ Body := CustomStringReplace(Body, '&', '&');
+ //Body := CustomStringReplace(Body, ' ', ' ');
+
+ Header := Header + Body;
+
+ Clipboard.SetTextBuf( PChar(Header) );
+ end;
+ end;
+end;
+
initialization
OleInitialize(nil);
finalization