Как принять куки (там есть вариант, куки от хедера берутся): http://forum.antichat.ru/showpost.php?p=788789&postcount=11
А че не понятного то? Разжевываю по порядку! В мемо1: maska=aallalaalala;session=ashhasha;lala=2481; Code: function Tform1.CopyCookie(s,sBuff:string):string; var text:string; i:integer; Begin text:=''; showmessage(inttostr(pos(s+'=',sBuff))); showmessage(inttostr(Length(sBuff))); //Посл символ у нас под номером 45 For i:=pos(s+'=',sBuff) to Length(sBuff) Do //в i записываем откуда начинается фраза "what=" //(В мемо1 у меня начинается фраза с 20 символа) //(в дальнейшем будет сокр МПК - МестоПоложениеКуки) //Дальше идем от МПК до символа ";" (когда сод. куки обрывается) //Но мы не знаем где будет находится символ ";" //Поэтому будем проходится от МПК до посл. символа sbuff (в намем случае до посл. символа memo1) Begin If sBuff[i]<>';' then text:=text+sBuff[i] else Break; //Тут мы сверяем текущий символ с символом ";"(окончание куки) //Если этого ";" символа нету то добавляем символ //В итоге как символ ";" встретился то у нас в переменной text будет кука (кука+значение куки) //и мы закончим проходится цикл так как уже кука у нас есть и нам не зачем дальше проходиться End; Result:=text; End; В Button1.OnClick пишем: Code: ShowMessage('Наша кука+значение куки: '+CopyCookie('What',Memo1.Lines.Text)); Все просто если подумать головой
Кто знает - можно как-нить изменить BorderStyle чужого окна? Скорее всего с помощью SendMessage я думаю, но найти не могу...
BorderStyle я тоже не нашел, но нарыл у себя следующий код: Code: procedure TForm1.Button1Click(Sender: TObject); var h: HWND; rgn: HRGN; rect: TRect; begin h:=FindWindow(nil, PChar('Безымянный - Блокнот')); GetWindowRect(h, rect); rgn := CreateRoundRectRgn(0, 0, rect.Right-rect.Left, rect.Bottom-rect.Top, 50 , 50); SetWindowRgn(h, rgn, True); end; Здесь мы ищим дескриптор окна с названием "Безымянный - Блокнот", после чего определяем его размер и создаем округлую область. Финальный штрих - и окно приобретает очертания нашей области, тоесть как-бы с заокруглеными углами. Это конечно не то, что ты хотел, но как вариант... Можно создать квадратную область и скрыть границы окна. Хотя уверен, что и с BorderStyle найдется решение.
=Zeus=, Спасибо конечно)) но смысла в этом не вижу, мне нужно сделать чтобы окну нельзя было менять размер, также чтобы окно нельзя было разворачивать на полный экран, а регион тут не причем З.Ы. никто незнает где найти описание всех параметров SendMessage? в SDK нифига найти немогу, хочется всетаки сделать красиво, а поменять BS на ToolWindow имхо лучший вариант...
Code: var wnd: HWND; old_long: Integer; begin wnd := FindWindow('Notepad', nil); old_long := GetWindowLong(wnd, GWL_STYLE); SetWindowLong(wnd, GWL_STYLE, old_long and not (WS_MAXIMIZEBOX or WS_SIZEBOX)); end; а вообще, посмотри все константы, начинающиеся с "WS_"
там все даже проще оказалось, вот как сделал: Code: var wh:hWnd; ... SetWindowLong(wh,GWL_STYLE,WS_SYSMENU or WS_GROUP or WS_CAPTION); ShowWindow(wh,0);ShowWindow(wh,1); но ToolWindow не нашел всеравно)
Но твой код не сохраняет атрибутов, которые были у окна раньше. Плохо смотришь WS_EX_TOOLWINDOW Но для него нужно сменить GWL_STYLE на GWL_EXSTYLE. Примерно так: Code: var wnd: HWND; old_long: Integer; begin wnd := FindWindow('Notepad', nil); old_long := GetWindowLong(wnd, GWL_EXSTYLE); SetWindowLong(wnd, GWL_EXSTYLE, old_long or WS_EX_TOOLWINDOW); end;
Flenov, на сколько я понял (сделав бесконечный цикл) функция выполняется в потоке, потому что интерфейс формы не зависает, но проц грузит хорошо)
ВОПРОС: как останавливать возобновлять поток созданный через: PHP: var th:cardinal; h:integer; begin // h := beginthread(nil, 1024, @sending1, nil, 0, th); end;
InfectedM: beginthread все равно сводится к винапишной функции CreateThread, так что лучше использовать её. Тем более вместе с ней можно юзать SuspendThread и ResumeThread (приостановить и продолжить выполнение потока).
Полностью поддерживаю Nullsleep в его совете о использовании CreateThread но раз уж так хочется можно делать так: Code: var th:cardinal; h:integer; begin // h := beginthread(nil, 1024, @sending1, nil, 0, th); SuspendThread(h);//приостановить ResumeThread(h);//продолжить end;
В мемо1: maska=aallalaalala;session=ashhasha;lala=2481; (кукисы, можно и запрос туда пихнуть, разницы не имеет для ниже приведенного кода) Код принятия кукисов: Code: function Tform1.CopyCookie(s,sBuff:string):string; var text:string; i:integer; Begin text:=''; showmessage(inttostr(pos(s+'=',sBuff))); showmessage(inttostr(Length(sBuff))); //Посл символ у нас под номером 45 For i:=pos(s+'=',sBuff) to Length(sBuff) Do //в i записываем откуда начинается фраза "what=" //(В мемо1 у меня начинается фраза с 20 символа) //(в дальнейшем будет сокр МПК - МестоПоложениеКуки) //Дальше идем от МПК до символа ";" (когда сод. куки обрывается) //Но мы не знаем где будет находится символ ";" //Поэтому будем проходится от МПК до посл. символа sbuff (в намем случае до посл. символа memo1) Begin If sBuff[i]<>';' then text:=text+sBuff[i] else Break; //Тут мы сверяем текущий символ с символом ";"(окончание куки) //Если этого ";" символа нету то добавляем символ //В итоге как символ ";" встретился то у нас в переменной text будет кука (кука+значение куки) //и мы закончим проходится цикл так как уже кука у нас есть и нам не зачем дальше проходиться End; Result:=text; End; В Button1.OnClick пишем: Code: ShowMessage('Наша кука+значение куки: '+CopyCookie('What',Memo1.Lines.Text)); Коменты можно убрать (расписал для новичков) План примерно таков: -Отправляем пакет (без кукисов) --Принимаем ответный пакет (ответный ответ придет с кукисами если отправляли на авторизацию пакет) -Отправляем пакет с кукисами, к примеру: Code: sendbuff :='GET vkontakte.ru/id1 ' HTTP/1.1'+ #13#10 + 'Host: vkontakte.ru'+ #13#10 + 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 AdCentriaIM/1.7 Firefox/2.0.0.14 WebMoney Advisor'+ #13#10 + 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'+ #13#10 + 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'+ #13#10 + 'Accept-Encoding: gzip,deflate'+ #13#10 + 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+ #13#10 + 'Keep-Alive: 300'+ #13#10 + 'Connection: keep-alive'+ #13#10 + 'Referer: http://vkontakte.ru/index.php'+ #13#10 + 'Cookie: '+CopyCookie('remixchk',sBuff)+';'+' '+CopyCookie('remixmid',sBuff)+';'+' '+CopyCookie('remixemail',sBuff)+';'+' '+CopyCookie('remixpass',sBuff)+ #13#10+ #13#10; --Принимаем ответный пакет
Есть сайт толковый который хранит информацию о биржевых транзакциях - http://www.finam.ru/analysis/export/default.asp На звпрос пользователя он генерирует файл отчет, динамически. Есть потребность автоматизировать процесс т.е. з задаными парамертами скачивать данные для множества акций. Чтобы пограммка написанная на делфе акуратно копировала эти файлы в нужную мне папку. Наставте меня на путь вреный и легкий. Делфу знаю давно вебдизайн тоже, а вот такими вещами еще не занимался.