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

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

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

ShIvADeSt (21-12-2007 03:31): http://forum.ru-board.com/topic.cgi?forum=33&topic=3706  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

   

Iceman82



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

Цитата:
Малчык хочет нахулиганить где-нибудь из под юзерского аккаунта

 
Малчык хочет по расписанию выключить свой компьютер, и для этого он не хочет использовать всякие глючные программулины с кучей всякой ненужной лабуды.
 
Ну да не об этом речь. Так вот кусок кода, который просто ничего не делает (вернее, в результате ничего не происходит)
 
    Public Declare Function ExitWindowsEx Lib "user32" _
      (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
 
    Public Declare Function GetLastError Lib "kernel32" () As Long
 
    Private Structure LUID
        Public LowPart As Long
        Public HighPart As Long
    End Structure
 
    Private Structure TOKEN_PRIVILEGES
        Public PrivilegeCount As Long
        Public TheLuid As LUID
        Public Attributes As Long
    End Structure
 
    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
 
    Private Declare Function OpenProcessToken Lib "advapi32" _
        (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
         ByRef TokenHandle As Long) As Long
 
    Private Declare Function LookupPrivilegeValue Lib "advapi32" _
        Alias "LookupPrivilegeValueA" _
        (ByVal lpSystemName As String, ByVal lpName As String, _
         ByRef lpLuid As LUID) As Long
 
    Private Declare Function AdjustTokenPrivileges Lib "advapi32" _
       (ByRef TokenHandle As Long, ByVal DisableAllPrivileges As Boolean, _
        ByRef NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _
        ByRef PreviousState As TOKEN_PRIVILEGES, ByRef ReturnLength As Long) As Long
 
    Public Sub AdjustToken()
        Const TOKEN_ADJUST_PRIVILEGES = &H20
        Const TOKEN_QUERY = &H8
        Const SE_PRIVILEGE_ENABLED = &H2
        Dim hdlProcessHandle As Long
        Dim hdlTokenHandle As Long
        Dim tmpLuid As LUID
        Dim tkp As TOKEN_PRIVILEGES
        Dim tkpNewButIgnored As TOKEN_PRIVILEGES
        Dim lBufferNeeded As Long
        Dim err_code As Long
 
        hdlProcessHandle = GetCurrentProcess()
        OpenProcessToken(hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _
           TOKEN_QUERY), hdlTokenHandle)
 
        ' Get the LUID for shutdown privilege.
        tmpLuid = New LUID
        LookupPrivilegeValue("", "SeShutdownPrivilege", tmpLuid)
        err_code = GetLastError()
 
        tkp.PrivilegeCount = 1    ' One privilege to set
        tkp.TheLuid = tmpLuid
        tkp.Attributes = SE_PRIVILEGE_ENABLED
 
        ' Enable the shutdown privilege in the access token of this process.
        AdjustTokenPrivileges(hdlTokenHandle, False, _
        tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded)
        err_code = GetLastError()
    End Sub
 
и по нажатию на кнопку такой код:
 
        AdjustToken()
        err_code = GetLastError()
        err_code = ExitWindowsEx(flgShutdown, &H80000000)
 
 
Всякие константы и проверки на ошибки я убрал. Факт в том, что программа работает, не ругается, но ничего и не происходит...
 
Кстати, забыл сказать - LogOff работает замечательно, т.е. если ExitWindowsEx вызвать с параметром flgLogOff, то все замечательно - сеанс текущего пользователя завершается... Но LogOff мне как раз и не нужен-то...

Всего записей: 48 | Зарегистр. 10-02-2005 | Отправлено: 18:11 22-03-2006 | Исправлено: Iceman82, 20:04 22-03-2006
JohhDoe



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесьесть пример на C#.
http://www.gotdotnet.ru/Downloads/Examples/21925.aspx
Если лень разбираться, то можно использовать готовую дллку (там же лежит).
Если хочется именно на вб, то эту дллку можно посмотреть рефлектором.
 
 
+
http://rsdn.ru/Forum/Message.aspx?mid=605794&only=1
 
Может быть дело в  
   Private Structure LUID
        Public LowPart As Long
        Public HighPart As Long
    End Structure  
 
где Long - 8 байт
хотя  
 
typedef struct _LUID {  
DWORD LowPart;  
LONG HighPart;
} LUID, *PLUID;

Всего записей: 37 | Зарегистр. 07-11-2004 | Отправлено: 23:49 22-03-2006 | Исправлено: JohhDoe, 00:00 23-03-2006
dmka



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

Цитата:
Малчык хочет по расписанию выключить свой компьютер, и для этого он не хочет использовать всякие глючные программулины с кучей всякой ненужной лабуды.

и с каких это пор системные утилиты стали "глючными программулинами", а хрень вызывающая winapi из vb.net правильной?
 
at hh:mm shutdown -f -s -t 1

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 21:42 24-03-2006
Iceman82



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmka
Мне не совсем понятна суть возмущения:

Цитата:
и с каких это пор системные утилиты стали "глючными программулинами", а хрень вызывающая winapi из vb.net правильной?  
at hh:mm shutdown -f -s -t 1

 
Во-первых, я и не говорил про системные утилиты, я упомянул именно "программулины" - есть небольшая разница, IMHO... И мне нужна именно моя программа, а не сис.утилиты.
 
Во-вторых, я и не говорил, что использование WinAPI  в VB.Net'е - это правильная "хрень" - моя
Цитата:
Или необходимо играться напрямую с API-функциями (очень не хотелось бы этим заниматься в Visual Basic'е   )

 
В-третих, ваша
Цитата:
если мосье извращенец, вызвать внешнюю утилиту, например shutdown -s -f    


Всего записей: 48 | Зарегистр. 10-02-2005 | Отправлено: 01:32 25-03-2006
dmka



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

Цитата:
Мне не совсем понятна суть возмущения

ладно, проехали...

Цитата:
Кстати, забыл сказать - LogOff работает замечательно

BOOL ExitWindowsEx(UINT uFlags, DWORD dwReason);
 
Скорее всего ты напутал с типом передаваемых параметров, EWX_LOGOFF это 0, потому и работает.

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 14:29 25-03-2006
Iceman82



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А еще вот такой вопрос:
Может ли мне кто-нибудь точно сказать, поддерживает ли VB.NET перегрузку операторов в классах?
Потому как примеры в MSDN'е по перегрузке операторов приводятся только для C#, а про VB.NET ничего конкретного не сказано.
ЗЫ: И если можно, дайте ссылку на источник информации, плз

Всего записей: 48 | Зарегистр. 10-02-2005 | Отправлено: 01:07 07-04-2006 | Исправлено: Iceman82, 01:08 07-04-2006
Iceman82



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще одна проблема возникла:
При написание собственного UserControl'a все проходит нормально, до тех пор, пока я не пытаюсь создать производный элемент управления. Если делать все через "Проект->Добавить производный элемент управления", то после выбора компонента-родителя выскакивает окно с сообщением

Цитата:
Could not locate the project item templates for inherited components.

Пытаюсь написать код для производного компонента "вручную". Добавляю просто новый компонент, и его родителем ставлю уже существующий:

Цитата:
Public Class ctlAlarmClock Inherits ctlClockLib.ctlClock

После этого в окне редактирования графического вида контрола пропадает его формочка и появляется сообщение об ошибке следующего содержания:

Цитата:
 
The designer could not be shown for this file because none of the classes within it can be designed.  The designer inspected the following classes in the file:  
 
    ctlAlarmClock --- The base class ctlClockLib.ctlClock' could not be loaded.  Ensure the assembly has been referenced or built if it is part of the project.
 

Насколько я понимаю, не хватает какой-то ссылки или файла. Что можно сделать?

Всего записей: 48 | Зарегистр. 10-02-2005 | Отправлено: 21:47 17-04-2006 | Исправлено: Iceman82, 21:52 17-04-2006
Iceman82



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

Цитата:
Может ли мне кто-нибудь точно сказать, поддерживает ли VB.NET перегрузку операторов в классах?

 
Ладно, сам спросил, сам себе и отвечу.
Дело в том, что поддержка перегрузки операторов в классах появилась только в Visual Studio 2005. Проблема была в том, что в настоящий момент я использую версию 2003 года... Источник информации - http://www.vbstreets.ru/Articles/66077.aspx и вот здесь http://www.rsdn.ru/article/vb/vbnet.xml

Всего записей: 48 | Зарегистр. 10-02-2005 | Отправлено: 23:24 21-04-2006 | Исправлено: Iceman82, 23:40 21-04-2006
Codegen



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ни как не получается создать окно в стиле ToolWindow, язык C#, Visual Studio 2005
 
Вот так можно создать обычное окно, но как поменять его стиль? В настройках формы нет такого свойста.
 

Код:
using System;
using System.Windows.Forms;
 
namespace CustomToolCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

Всего записей: 55 | Зарегистр. 19-06-2004 | Отправлено: 20:11 17-02-2007
GastonR

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

Цитата:
Вот так можно создать обычное окно, но как поменять его стиль? В настройках формы нет такого свойста...

В конструкторе добавить следующую строчку:

Цитата:
this.FormBorderStyle = FormBorderStyle.FixedToolWindow;

 

Всего записей: 555 | Зарегистр. 26-01-2004 | Отправлено: 22:23 17-02-2007
MoKC0DeR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть библиотека (оформлена как dll) .NET. Как воспользоватся классами/объектами из этой библиотеки (язык не принципиален)

Всего записей: 510 | Зарегистр. 31-03-2004 | Отправлено: 22:56 28-04-2007
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MoKC0DeR
В своем проекте добавить ссылку на dll (Add reference в Visual Studio) и вперед. Либо задействуя полное имя с namespace класса, либо просто using namespase (C#).

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 01:09 29-04-2007
MoKC0DeR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EZH
спасибо все получилось.

Всего записей: 510 | Зарегистр. 31-03-2004 | Отправлено: 22:41 30-04-2007
chs52ncm

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
C#2.0
Нужно сделать дерово сети:
начинается с корня и ветвится на компьютеры, которые ветвятся на папки, которые ветвятся на файлы и папки и т.д.
 
Звучит плохо, т.к. это будет долгий процесс даже для средней по размеру сети. Так что просто нужны деревья отдельных компьютеров.
 
Список компьютеров в сети получается с помощью класса NetworkBrowser(Sacha Barber), к-рый можно найти здесь: http://www.codeproject.com/cs/internet/ListNetworkComputers.asp
 
Файлы в сети можно открывать обычными IO функциями, прописав к ним путь, похожий на этот: \\Computer1\Dir1\File1.ext
 
Есть собственная функция, пишущая дерово папки в XML-файл - принимает два параметра: путь к папке, путь к создаваемому XML-файлу.
Думаю, ей можно будет передать сетевой путь типа(\\Computer1\Dir1). Хотя не знаю. Времени нет запускать виртуальные машины и проверять скомпилированный в Visual Studio модуль.
Так как сделать  список шареных папок типа вот этого?
Comp1->(Dir1,Dir2)
==================
                Dir1->SubDir1...
              /
Comp1    \
                Dir2->Subdir1...
==================
 
Помогите кто может!
 

Всего записей: 4 | Зарегистр. 01-09-2006 | Отправлено: 18:45 01-06-2007 | Исправлено: chs52ncm, 18:47 01-06-2007
grek99



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

Всего записей: 97 | Зарегистр. 17-11-2005 | Отправлено: 23:50 13-12-2007
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
grek99
Это нормальное поведение. Тебе просто нужно организовать отрисовку в событии OnPaint формы, чтобы все отрисовывалось заново каждый раз, когда это потребует Windows. Заключи эту отрисовку в OnPaint по условию проверки некого флага, и выставляй этот флаг в нужном тебе действии.

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 14:51 14-12-2007
grek99



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

Всего записей: 97 | Зарегистр. 17-11-2005 | Отправлено: 22:27 14-12-2007
   

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы про .NET
ShIvADeSt (21-12-2007 03:31): http://forum.ru-board.com/topic.cgi?forum=33&topic=3706


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru