Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: bomzzz
Дата сообщения: 25.04.2011 19:22
karakurt2
это для фтп, я вообще то делал для хттп, но оно и фтп качает - фтп как раз качается нормально. но в принципе так и делал как у тебя
Автор: Molniev
Дата сообщения: 25.04.2011 21:29
1. Возможно WinInet и не подерживает такие объёмы? Но сомневаюсь.
2. Возможно стоит попробовать заменить InternetReadFile на класический ReadFile
3. Какой код ошибке возвращает GetLastError?
4. В принципе возможно будет проще не решать эту проблему, а заменить на сокеты + собственные запросы?
Автор: bomzzz
Дата сообщения: 25.04.2011 21:32
Molniev
1 в смысле не поддерживает. все менеджеры закачек у меня качают файлы нормально. с медленных серверов большого размера качает и моя самоделка.
2 не знал попробую
3 никакой - скачивание закончено удачно
4 не думаю

Добавлено:

Цитата:
InternetReadFile на класический ReadFile

нельзя заменить и маленькие файлы считывает 0 байт
Автор: bomzzz
Дата сообщения: 26.04.2011 12:12
никто функцию FtpGetFileSize не использовал? у меня не правильно определяются размеры файлов больше 4 G

Добавлено:
Molniev

Цитата:
Возможно WinInet и не подерживает такие объёмы? Но сомневаюсь.

уже думаю, что все менеджеры закачек сделаны
Цитата:
сокеты + собственные запросы

Автор: terminat0r
Дата сообщения: 26.04.2011 12:49
bomzzz

Цитата:
не качаются файлы больше примерно 2 гигабайт.

Это проблема ОС и WinInet.


Цитата:
у меня не правильно определяются размеры файлов больше 4 G

посмотрите максимальные значения для dword (это кажется тип для размера файла) и посмотрите сколько будет байт в 4Гб
Автор: bomzzz
Дата сообщения: 26.04.2011 15:16
terminat0r
до 4 гигов младшее слово правильно отражает размер файла, старшее слово 0. после 4 гигабайтстершее слово ноль, младшее слово размер файла минус 4294967296. после размера 8 гигабайт - старшее слово ноль, в младшем слове откидывается крайняя правая цифра, потом вторая и так далее. больше 40 гиг места не было проверить


Цитата:
Это проблема ОС и WinInet.

менеджеры закачек делаются через сокеты???

Добавлено:
фигня такая: у программы нет окна, но самой ей нужны окна для ввода данных. я взял Thread-ом запустил окно. как в основной программе определить, что Thread закончил работу? есть какая нибуть функция которая по ИД следит за работой Thread-а???
Автор: terminat0r
Дата сообщения: 26.04.2011 15:52
bomzzz
ваша проблема связана с
http://support.microsoft.com/kb/298618
Автор: bomzzz
Дата сообщения: 26.04.2011 16:10
думаешь. где то флаг видел KEEP ALIVE
Автор: karakurt2
Дата сообщения: 26.04.2011 16:22
bomzzz
по-хорошему, тогда надо использовать синхронизацию.

под старшим словом подразумевается параметр функции?

Цитата:

DWORD FtpGetFileSize(
__in HINTERNET hFile,
__out LPDWORD lpdwFileSizeHigh
);


не верится, чтобы майкрософт оставляла такие косяки. когда раньше я пользовался библиотекой wininet, мне надо было скачивать с удалённой машины параметры сейсмических исследований по запросу из базы данных, а это файлы довольно-таки внушительного объёма.
Автор: bomzzz
Дата сообщения: 26.04.2011 16:23
karakurt2
угу. я пока думаю, что в компиляторе ошибка. вернее надеюсь, что можно менеджер закачек на одном вининете сделать.


Цитата:
о-хорошему, тогда надо использовать синхронизацию.

что это значит?

Добавлено:
уже доводилось находить ошибки в компиляторах. даже не одну, а две в Турбо Бейсике. на понимание первой у меня много лет ушло, а вторую уже быстро
Автор: karakurt2
Дата сообщения: 26.04.2011 16:32
для синхронизации действий двух потоков используйте, например, объект mutex. проверить состояние завершения потока можно функцией WaitForSingleObject(). У Рихтера в книге эта кухня описана замечательным образом.
Автор: bomzzz
Дата сообщения: 26.04.2011 16:34

Цитата:
WaitForSingleObject
но она ожидает не окончание а начинание процесса. я пока смастерил цикл который ждет пока окно не исчезнет по классу окна. но еще раз прочитаю про WaitForSingleObject. спс


Добавлено:
я уже извиняюсь за наглость, не знаете возвращаемый хендл памяти функцией LocalAlloc - есть абсолютный адрес памяти?
Автор: karakurt2
Дата сообщения: 26.04.2011 17:03
да, насколько я себе представляю. в Win32 нет перемещаемой памяти, эти функции уже устарели.
Автор: bomzzz
Дата сообщения: 26.04.2011 17:12

Цитата:
в Win32 нет перемещаемой памяти, эти функции уже устарели.

??????????????????????????????????????????????????????????????????????
Автор: karakurt2
Дата сообщения: 26.04.2011 17:52
в 16-разрядной Windows память надо было фиксировать, чтобы физические страницы, выделенные под определённый кусок памяти не были сброшены на диск. в Win32 необходимость в вызове LocalLock() отпала. его где-то делают, где-то нет. я бы предпочёл его оставить, чтобы следовать однажды установленным правилам.
Автор: Abs62
Дата сообщения: 26.04.2011 18:02
bomzzz

Цитата:
возвращаемый хендл памяти функцией LocalAlloc - есть абсолютный адрес памяти?

Зависит от флагов вызова. Если указан LMEM_MOVEABLE - нет, возвращается хэндл, надо будет звать LocalLock. Если не указан - да, возвращается указатель.
Автор: bomzzz
Дата сообщения: 26.04.2011 18:18
Abs62
Автор: bomzzz
Дата сообщения: 28.04.2011 09:45
подскажите пожалуйста, может кто знает, InternetSetCookie
позволяет использовать шаблоны?
вот так вроде не работает '.site.com', только так 'http://my.site.com/'
вот так тоже не получается '*.site.com' 'http://*.site.com'
можно как то привязать кукиш к всему домену???

Добавлено:
сорри сам дотыкался вот так можно http://site.com/ ко всему домену *.site.com привязывается
Автор: bomzzz
Дата сообщения: 28.04.2011 22:13
никому не попадалось такое, не могу нагуглить. при скачивании используется кеш в папке темп, но некоторые программы умеют использовать для кеша не системную папку а свою. вот как переназначить для приложения системную папку для временных файлов?
Автор: bomzzz
Дата сообщения: 30.04.2011 13:03

не подскажете, давно не могу найти как вот эта сеточка делается из строк?
Автор: KChernov
Дата сообщения: 30.04.2011 17:09
bomzzz
Такой компонент обычно называется Grid чего-то там.
Такое должно быть где-то в свойствах отображения.
Автор: Garrett
Дата сообщения: 30.04.2011 18:17
bomzzz
В МСДН почитай про CListCtrl...
Автор: bomzzz
Дата сообщения: 30.04.2011 19:38
Автор: bomzzz
Дата сообщения: 01.05.2011 22:35
никому пример такой не попадался, вот даже не смог у себя под рукой ни одной проги найти для скрина, обычно этим антивирусы славяться

как сделать, чтоб из иконки в трее выскакивал балон тултип с предупреждением. тут столько подводных камней и как коррдинаты определить и как этот балон надуть даже не знаю с какой стороны взяться.
Автор: akaGM
Дата сообщения: 01.05.2011 23:33
bomzzz
ты б какую-нить библиотеку посмотрел для начала, MFC, например...

а в МSDN все задаваемые тобой вопросы лет 10 как описаны...
Автор: bomzzz
Дата сообщения: 01.05.2011 23:58
а ты че не в библиотеке, мурзилку не завезли?
Автор: akaGM
Дата сообщения: 02.05.2011 03:11
bomzzz
тебя уже из одного топа выперли...

Цитата:
последнее предупреждение - потом будет запрос на запрет поста в этом разделе. Или пишем по сути, или не пишем вообще.
Автор: bomzzz
Дата сообщения: 02.05.2011 06:43
ты начни читать медицинскую энциклопедию, в ней все твои проблемы описаны, уже лет сто
Автор: bomzzz
Дата сообщения: 03.05.2011 18:09
вот как иконка в трее ищется.
http://forum.ru-board.com/topic.cgi?forum=33&topic=0276&start=60
только тут до ума не доведено.
здесь лучше разжевывается, но местоположение тоже не сделано
http://www.manhunter.ru/assembler/283_poluchenie_spiska_ikonok_v_tree.html
я сделал только на масме.
[more]
.386

.model flat, stdcall
option casemap :none

    include \masm32\include\windows.inc

    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\shell32.inc
    include \masm32\include\masm32.inc
    include \masm32\include\comdlg32.inc
    include \masm32\include\wininet.inc
    include \masm32\include\Comctl32.inc
    include \masm32\include\winmm.inc
    include \masm32\include\advapi32.inc
    include \masm32\include\gdi32.inc

    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\shell32.lib
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\comdlg32.lib
    includelib \masm32\lib\wininet.lib
    includelib \masm32\lib\Comctl32.lib
    includelib \masm32\lib\winmm.LIB
    includelib \masm32\lib\advapi32.lib
    includelib \masm32\lib\gdi32.lib

EXTRADATA struct
Wnd dd ? ; Хэндл родительского окна иконки
uID dd ? ; Стиль отображения иконки
EXTRADATA ends

.data
mestitle    db "Bomz",0
form        db "ID процесса: %d",9, 9,"TOP: %d", 9,"LEFT: %d", 9,"BOTTOM: %d", 9,"RIGHT: %d", 0
Class1        db 'Shell_TrayWnd',0
Class2        db 'TrayNotifyWnd',0            ; область уведомлений
Class3        db 'SysPager',0
Class4        db 'ToolbarWindow32',0

.data?
extra        EXTRADATA <>
button        TBBUTTON <>
rect1        RECT <>
rect        RECT <>
buffer        db 512 dup(?)
hWnd        HWND ?
ProcId        dd ?
hProcess    dd ?
lpData        dd ?
lpData1        dd ?
IconNumber    dd ?
BytesRead    dd ?
ProcTrayId    dd ?
hWnd1        HWND ?
ButtonID    dd ?

.code
start:

    invoke FindWindow,addr Class1, NULL            ; Найти окно трея
    mov hWnd, eax
    invoke FindWindowEx,hWnd,NULL,addr Class2, NULL        ; Найти окно уведомлений в трее
    mov hWnd, eax
    invoke FindWindowEx,hWnd,NULL,addr Class3, NULL        ; Найти трей
    mov hWnd, eax
    invoke FindWindowEx,hWnd,NULL,addr Class4, NULL        ; Найти панель иконок в трее
    mov hWnd, eax
    invoke GetWindowRect, hWnd,addr rect
    invoke SendMessage,hWnd,TB_BUTTONCOUNT,0,0        ; Получить количество иконок в трее
    mov IconNumber, eax
    invoke GetWindowThreadProcessId,hWnd,addr ProcId    ; Получить ID процесса-владельца трея
    invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,ProcId    ; Открыть процесс с полным доступом
    mov hProcess,eax                    ; Сохранить хэндл процесса-владельца трея
    invoke VirtualAllocEx,hProcess,NULL,sizeof button,MEM_COMMIT,PAGE_READWRITE    ; Выделить блок памяти в контексте процесса
mov lpData, eax                    ; Сохранить указатель на блок памяти
    invoke VirtualAllocEx,hProcess,NULL,sizeof rect1,MEM_COMMIT,PAGE_READWRITE    ; Выделить блок памяти в контексте процесса
mov lpData1, eax                    ; Сохранить указатель на блок памяти
NEXT:
;    dec IconNumber
    mov IconNumber, 0

    invoke SendMessage,hWnd,TB_GETBUTTON,IconNumber,lpData                        ; Получить иконку из трея с индексом IconNumber
    invoke ReadProcessMemory, hProcess, lpData,addr button, sizeof button, addr BytesRead        ; Прочитать структуру иконки
    invoke ReadProcessMemory,hProcess,button.dwData,addr extra, sizeof extra,addr BytesRead    ; Прочитать пользовательские данные иконки
    invoke GetWindowThreadProcessId, extra.Wnd,addr ProcTrayId                    ; Получить Id процесса, чья иконка находится в трее

    invoke SendMessage,hWnd,TB_GETRECT, button.idCommand, lpData1
    invoke ReadProcessMemory, hProcess, lpData1,addr rect1, sizeof rect1, addr BytesRead


    mov eax, rect1.top
    inc eax
    add rect.top, eax
    mov eax, rect1.left
    inc eax
    add rect.left, eax
    mov eax, rect1.right
    dec eax
    add rect.right, eax
    mov eax, rect1.bottom
    dec eax
    add rect.bottom, eax


    invoke wsprintf,ADDR buffer,ADDR form, ProcTrayId, rect1.top, rect1.left, rect1.bottom, rect1.right
    invoke MessageBox,0,ADDR buffer,ADDR mestitle,MB_OK + MB_ICONASTERISK
    invoke wsprintf,ADDR buffer,ADDR form, ProcTrayId, rect.top, rect.left, rect.bottom, rect.right
    invoke MessageBox,0,ADDR buffer,ADDR mestitle,MB_OK + MB_ICONASTERISK

;cmp IconNumber,0
;jnz NEXT
    invoke VirtualFreeEx,ProcId,lpData,0,MEM_RELEASE
    invoke CloseHandle,ProcId
    invoke ExitProcess,0

end start
[/more]
левый верхний край иконки топ и лефт
Автор: avatator
Дата сообщения: 08.05.2011 15:53
как усовершенствовать скрипт для видео
http://ipopped.blogspot.com

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.