Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];

Вниз

контрол, для отображения карты диска   Найти похожие ветки 

 
AntiDot   (2008-02-09 22:54) [0]

Приветствую вас, товарищи.
собственно сабж. Какой контрол надо использовать. чтобы отобразить карту диска, как к примеру, это делалось в дефрагментаторе win9x/2k.


 
DVM ©   (2008-02-09 22:55) [1]

TPaintBox


 
AntiDot   (2008-02-09 23:06) [2]

Можно поподробнее? всё таки с winAPI работаем, к какому классу контрол принадлежит? ато что то посмотрел по хидерам и не нашёл я, да и в мсдн (у меня только от 6-ой студии, так что если есть в новой прошу не ругать) нет упоминаний про paintbox"ы


 
DVM ©   (2008-02-09 23:12) [3]


> AntiDot

Если ты надеешься создав окно того же класса, что в дефрагментаторах, получить сразу карту диска, то вынужден тебя огорчить - ничего не выйдет. Не все так просто.

Карта диска - это всего лишь картинка, должным образом нарисованная на любом окне. Класс тут не важен. Я привел тебе компонент из VCL, на котором удобнее всего рисовать. Но если ты хочешь на апи, то смело придумывай название каласса сам и вперед - отрисовывай карту по получении окном сообщения WM_PAINT


 
AntiDot   (2008-02-09 23:19) [4]

>Если ты надеешься создав окно того же класса, что в дефрагментаторах, >получить сразу карту диска, то вынужден тебя огорчить - ничего не >выйдет. Не все так просто.
=) добрый человек, я прекрасно знаю о NTFS, её структуре и метафайлах, один из которых, а именно $bitmap, доступ к которому можно осуществить только (насколько я знаю) raw доступом к диску, взяв адрес начального кластера из шестой секции в $MFT...
однако мы отвелеклись, я с GUI не очень дружу, потому и спрашивал вопрос чисто по внешнему виду контрола, есть ли такой класс готовый или нет, теперь понимаю, что нету =(, поэтому придётся трудится ещё долго.
Собственно выражаю вам свою благодарность, за то, что показали мне где надо копать.
Тема закрыта. Спасибо ещё раз.


 
AntiDot   (2008-02-09 23:22) [5]

приношу извинения, удалил строку нечаяно, потому бред какой то получился выше, предложение
"взяв адрес начального кластера из шестой секции в $MFT..." в оригинале планировалось как
"взяв адрес начального кластера из шестой секции в $MFT, и представляет собой карту диска. каждый бит соотвественно указывает на кластер жесткого диска."

ещё раз сорри, ник не зареган, потому исправить не было возможность.. ночь на дворе, уже от работы связно что либо объяснять разучился.


 
guav ©   (2008-02-10 00:13) [6]

> доступ к которому можно осуществить только (насколько я
> знаю) raw доступом к диску, взяв адрес начального кластера
> из шестой секции в $MFT

Ну почему же только так.
Если интересует не файл $Bitmap а само содеримое bitmap, то FSCTL_GET_VOLUME_BITMAP получает его. Если интересует доступ к $Bitmap как к файлу, то можно передать X:\$Bitmap в CreateFile, только насчёт того с какими правами получится его открыть не уверен (может и ни с какими лень проверять).
Контролов в Windows много хороших и разных (искать по Individual Control Information в MSDN) но для подобной задачи прийдётся рисовать самому.
Вообще заявление показывает, что не читал ты документацию майкрософт о дефрагментации. Так что надо бы почитать о FSCTL_GET_VOLUME_BITMAP, FSCTL_GET_RETRIEVAL_POINTERS, FSCTL_MOVE_FILE. Даже если не собираешься использовать FSCTL_GET_VOLUME_BITMAP и FSCTL_GET_RETRIEVAL_POINTERS а собираешься получать информацию "RAW доступом".
Работать с этими кодами не сложно. Нарисовать окошко с битмапом тоже несложно. Самое сложное - это именно реализовать толковый алгоритм дефрагментации. При том что дефрагментаторов полно, хороших и не очень, платных и нет, даже в windows входит свой, написанием своего дефрагментатора вряд ли стоит заниматься.


 
Германн ©   (2008-02-10 00:51) [7]


> AntiDot   (09.02.08 23:06) [2]
>
> Можно поподробнее? всё таки с winAPI работаем, к какому
> классу контрол принадлежит?

????
То ли я, то ли лыжи...?


 
AntiDot   (2008-02-10 01:51) [8]


>  (искать по Individual Control Information в MSDN)


Спасибо большое.


> Если интересует доступ к $Bitmap как к файлу, то можно передать
> X:\$Bitmap в CreateFile, только насчёт того с какими правами
> получится его открыть не уверен (может и ни с какими лень
> проверять).

Честно, передать $bitmap у меня не получилось, таким образом можно открыть однако $mft (остальные метафайлы не проверял), но не $bitmap.
hMFT=CreateFileW(fnBitMap, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0x2000000, NULL);
однако попытка провести чтение выдает ошибку прав доступа, что собственно и понятно. Тут, конечно можно было бы много размышлять как получить доступ. по этому поводу есть хорошие статьи на wasm.ru, на мой взгляд прямой доступ оказался самым оптимальным.


> Вообще заявление показывает, что не читал ты документацию
> майкрософт о дефрагментации. Так что надо бы почитать о
> FSCTL_GET_VOLUME_BITMAP, FSCTL_GET_RETRIEVAL_POINTERS, FSCTL_MOVE_FILE.
>

Статью читал, однако с ними было много проблем, в силу того, что стандартные msvs 6.0 *.inc кривые по сути и было много проблем, обсуждению которых можно посвятить целую эху, потому я глянул одним глазом в Сайсе на DiskView от Руссиновича, где и увидел, что он использует DeviceIoControl только для получения базовых сведений NTFS_VOLUME, что собственно я и сам уже делал.


> > Можно поподробнее? всё таки с winAPI работаем, к какому
> > классу контрол принадлежит?????То ли я, то ли лыжи...?
>

Возможно я что-то напутал, не силён я в ООП, и никогда не работал с GUI по факту, потому приношу извинения если что-то напутал.

2all> можно конечно долго продолжать дисскусию насчёт ntfs, и я рад, что ещё есть люди,к отрые могут ответить, однако low-level проекта мною рассмотрен и разработан, вопросов тут не возникает, мне приятно будет увидеть иное решение проблемы доступа к $bitmap, однако суть вопроса заключалась не в этом.
Как уже я заметил выше, я не работал никогда с GUI, и лишь обстоятельства вынудили меня делать прикладное ПО с интерфейсом сложнее plain window & button =)
Просить написать за меня код никого не собираюсь, однако может быть совет, алгоритм или что-нибудь наводящее по поводу вообще как рисуется это всё... честно, самое сложное начать, никак не получается именно первый шаг.


 
guav ©   (2008-02-10 01:52) [9]

> [7] Германн ©   (10.02.08 00:51)
> То ли я, то ли лыжи...?

Чего ?
В винапи контролы тоже называются контролами.
И экземпляры окон создаются по классам контролов.

http://msdn2.microsoft.com/en-us/library/bb775738(VS.85).aspx
You can create a ComboBoxEx control by using the CreateWindowEx function and specifying WC_COMBOBOXEX as the window class.


 
Германн ©   (2008-02-10 02:05) [10]


> guav ©   (10.02.08 01:52) [9]
>
> > [7] Германн ©   (10.02.08 00:51)
> > То ли я, то ли лыжи...?
>
> Чего ?
>

Значит я, а не лыжи. :(
Понял и прочитал. Добавлю в свой список. Спасибо.


 
AntiDot   (2008-02-10 02:11) [11]

Однако, всё же ещё раз спасибо товарищу guav, за то, что заставил меня ещё раз пересмотреть документацию, в хоче чего я пришёл к тому же Руссиновичу и улицизрел, что не только в DeviceIoControl может быть использован управляющий код.

это из сорца дефрагментатора всё того же Марка Руссиновича.
status = NtFsControlFile( VolumeHandle, NULL, NULL, 0, &ioStatus,
                                 FSCTL_GET_VOLUME_BITMAP,
  &nextLcn, sizeof( cluster ),
  bitMappings, BITMAPSIZE )

Иногда просто надеешься больше на свою смекалку, чем на мсдн =) ибо на диалапе 14-33.6 эта мсдн загружается столько, что можно успеть принять кофе с сигаретой.

P.S. вопрос про GUI всё же остается.


 
guav ©   (2008-02-10 02:23) [12]

> однако попытка провести чтение выдает ошибку прав доступа,
> что собственно и понятно.

Ну нет так нет. Некоторые метафайлы можно так открыть, некоторые нельзя.

> однако может быть совет, алгоритм или что-нибудь наводящее
> по поводу вообще как рисуется это всё...

С чем именно проблема ? Зарегать класс со своей обработкой WM_PAINT ?
Нарисовать в WM_PAINT закрашеный квадратик или картинку из ресурса ?


 
AntiDot   (2008-02-10 02:29) [13]


> Зарегать класс со своей обработкой WM_PAINT ? Нарисовать
> в WM_PAINT закрашеный квадратик или картинку из ресурса
> ?

была проблема с постановкой корректного вопроса "что надо сделать, что бы получить результат."
вы его задали, потому проблема исчезла ;-) остальное дело реализации, и это не проблема.


 
Riply ©   (2008-02-10 02:56) [14]

> [11] AntiDot   (10.02.08 02:11)
> это из сорца дефрагментатора всё того же Марка Руссиновича.

А что, Руссинович выкладывал исходники ?
Можно ссылку, а то что-то у меня не получается их найти ?
Если, конечно, я там искала где надо :) http://technet.microsoft.com/en-us/sysinternals/


 
Игорь Шевченко ©   (2008-02-10 11:58) [15]


> Можно ссылку, а то что-то у меня не получается их найти
> ?


Книжку надо было покупать, которая "Внутреннее устройство Windows", с ней компакт шел с полным содержимым сайта sysinternals
Теперь я даже не знаю, где в тырнете искать.


 
ketmar ©   (2008-02-10 17:01) [16]

>[15] Игорь Шевченко © (2008-02-10 11:58:00)
>Теперь я даже не знаю, где в тырнете искать.

теперь его купили, и искать нечего. можно списывать в расход.

---
Understanding is not required. Only obedience.


 
AntiDot   (2008-02-10 21:47) [17]

вот дефрагментатор
http://doc.sch130.nsc.ru/www.sysinternals.com/files/defrag.zip
ну и собственно архив сайта Руссиновича, до того как его купили MS, вследствии чего сорцы были "утеряны"
http://doc.sch130.nsc.ru/www.sysinternals.com/


 
Riply ©   (2008-02-10 22:44) [18]

> [15] Игорь Шевченко ©   (10.02.08 11:58)
> Книжку надо было покупать, которая "Внутреннее устройство Windows",
> с ней компакт шел с полным содержимым сайта sysinternals

Озарение, что нужно читать, а что не нужно,
иногда, приходит слишком поздно :)

> [17] AntiDot   (10.02.08 21:47)
> вот дефрагментатор
> ну и собственно архив сайта Руссиновича, до того как его купили MS

Спасибо !



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.04 c
2-1226328530
@!!ex
2008-11-10 17:48
2008.12.21
класс, который не нужно создавать.


3-1211369795
Leo
2008-05-21 15:36
2008.12.21
Использование переменной внутри запроса.


2-1224144320
lewka
2008-10-16 12:05
2008.12.21
Форма по верх всех окон


2-1226311240
Rav4
2008-11-10 13:00
2008.12.21
postmessage - Как послать сообщение?


6-1196884543
Norm Iridium
2007-12-05 22:55
2008.12.21
Delphi как получить HTML-код страницы? А через прокси?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский