Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    my610

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Цитата:
    Мне это не подходит. В моем случае нужно узнать хэндл файла и закрыть его. Как узнать хэндл я знаю, а вот как закрыть хз.

    DuplicateHandle с флагом DUPLICATE_CLOSE_SOURCE не?
    я пологаю вы через ZwQuerySystemInformation хэндл получаете?

    Всего записей: 34 | Зарегистр. 10-05-2011 | Отправлено: 18:43 15-10-2011 | Исправлено: my610, 18:51 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    my610
    Имеется такой код для получения хэндла:
    Код
     
    Добавлено:
    my610
    Вот так не катит

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 19:01 15-10-2011
    my610

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK, попробуйте примерно так:

    Код:
     
    ............
                  if (FilePath <> '') and (pos(SubFileName,FilePath)>0) then begin
                    result:=Handle;
                    
                      hProcess:= OpenProcess(PROCESS_DUP_HANDLE, True, pHandleInfo^.Information[I].ProcessId);
                      if (hProcess <> 0) then try
     
                        if DuplicateHandle(hProcess,
                                           pHandleInfo^.Information[I].Handle,
                                           GetCurrentProcess,
                                           @hFile,
                                           0,
                                           True,
                                           DUPLICATE_CLOSE_SOURCE) then
                        CloseHandle(hFile);
                    finally
                        CloseHandle(hProcess);
                    end;                
                    break;
                  end;
     

    Всего записей: 34 | Зарегистр. 10-05-2011 | Отправлено: 19:25 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    my610
    Не работает..

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 19:33 15-10-2011
    my610

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK, какая система, что за процесс с какими правами, и под какой учетной записью работает?
    использую почти подобный код, под админом с WinXP до Win7 проблем не возникало, единственное в семерке есть некоторые тонкости, которые надо учитывать, ну и если процесс системный, то нужны привилегии отладчика получать

    Всего записей: 34 | Зарегистр. 10-05-2011 | Отправлено: 19:38 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    my610
    Win7, файл изображения (png), который используется библиотекой под названием botva2.dll. Работаю под учеткой админа.  Вот весь код dll.

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 19:47 15-10-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    А Process Explorer в колонке Integrity для вашего процесса что показывает?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:57 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Вы это о чем?

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 20:08 15-10-2011
    my610

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK, погодите что то я не понял, вы загружаете дилку botva2.dll в своей программе?

    Всего записей: 34 | Зарегистр. 10-05-2011 | Отправлено: 20:21 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    my610
    Да.

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 20:22 15-10-2011
    my610

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK, тогда следующие вопросы:
    - дилка ваша
    - как происходит загрузка либы
    - если дилка ваша, то корректно ли высвобождаются ресурсы и закрываются дескрипторы в ней

    Всего записей: 34 | Зарегистр. 10-05-2011 | Отправлено: 20:42 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    my610

    Цитата:
    дилка ваша  

    botva2.dll - нет. Либа хтуоса.

    Цитата:
    - как происходит загрузка либы  

    Статически.

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 20:50 15-10-2011
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите -такая задача есть ветка в реестре
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}
     
    В ней много подключей,(0001, 0002, 0003 и т.д) но в одном из них есть строковый параметр NetworkAddress с  значением 001635A790B9
     
    Как его найти?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 04:56 20-10-2011 | Исправлено: GRom V, 04:57 20-10-2011
    andreybear

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Вопрос по компонентам TXLSFile.
    Имеется несколько файлов эксель с одним листом в каждом. Необходимо скопировать данные из всех этих файлов в один файл. Как можно скопировать данные с листа одной книги на лист другой книги используя TXLSFile?

    Всего записей: 132 | Зарегистр. 21-07-2011 | Отправлено: 08:44 20-10-2011
    ppkp

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как узнать платформу и разрядность ОС? GetEnvironmentVariable('PROCESSOR_ARCHITECTURE') показывает x86 как на Win7x32 так и на Win7x64. Название ОС через
    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion', False) then
        Result := Reg.ReadString('ProductName');
    работает только в XP, в Win7 - пустые строки

    Всего записей: 480 | Зарегистр. 13-04-2006 | Отправлено: 15:11 20-10-2011
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ppkp
    Cпособ некошерный, но я проверял одновременное существование папок Program Files (x86), SysWOW64 и ветки реестра HKLM/SOFTWARE/Wow6432Node...
    Тоже интересно узнать, как сделать по уму...
     
    Вот что нашёл в Инете когда-то: Подробнее...

    Всего записей: 3142 | Зарегистр. 29-09-2005 | Отправлено: 15:17 20-10-2011 | Исправлено: DmitryKz, 15:23 20-10-2011
    ppkp

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо большое. Разберусь. А какие переменные нужно использовать, чтобы написАть, что программа построена для 64-битной(32-битной) ОС? $(Platform)?

    Всего записей: 480 | Зарегистр. 13-04-2006 | Отправлено: 16:14 20-10-2011
    kirnn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


    Цитата:
     
    Спасибо большое. Разберусь. А какие переменные нужно использовать, чтобы написАть, что программа построена для 64-битной(32-битной) ОС? $(Platform)?
     

    Не совсем понятен вопрос. Что надо написать и где?
    Для определения какая программа запущена и под какой ОС (разрядность) используй IsWow64Process

    Всего записей: 32 | Зарегистр. 10-12-2001 | Отправлено: 19:21 20-10-2011
    ppkp

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kirnn
    Пишу программу. Компилировать ее буду как 32-битную, так и 64-битную. Получится, вроде-бы две программы, но тело программы, очевидно, будет одно. И в нем нужно поставить $IF XXXXX $THEN MyProgramVersion := 'Моя Программа (x64)' $ELSE MyProgramVersion := 'Моя Программа (x32)'. Переменную MyProgramVersion буду выводить в About окне. XXXXX - вот вопрос что должно тут быть.
    Допустим, на Win7x64 я запускаю 32-битную пр-му, и она показывает в окне About 'Моя Программа (x32)', если же я запускаю 64-битную, соответственно, она показывает в окне About 'Моя Программа (x64)'. Ну полностью как в WinRAR.
    А под какой осью запущена программа - это другая переменная.

    Всего записей: 480 | Зарегистр. 13-04-2006 | Отправлено: 20:40 20-10-2011 | Исправлено: ppkp, 22:00 20-10-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ppkp
    http://docwiki.embarcadero.com/RADStudio/en/Conditional_compilation_%28Delphi%29

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 00:48 21-10-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru