Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2010, 11:16   #1
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию Как вызвать API в С#

Подскажите как вывзывать WIN API в C# и могут ли все
классы или что там .NET заменить эти WIN API ф - ции.
Еще тоакой вопрос как работать с файлами в C#? - через
какие .NET функции.
Fog вне форума Ответить с цитированием
Старый 29.10.2010, 12:00   #2
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Простой пример:

Код:
[DllImport("User32.dll")]
public static extern void SetWindowText(IntPtr hwnd, String text);
Для работы с файлами, нужно использовать потоки: FileStream, StreamReader и т.п.

Вообще, ответы на первый и второй вопрос выводятся в большом кол-во googl'ом.
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 29.10.2010, 12:06   #3
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Ну например сохранить настройки в XML с помощью сериализации (сильно урезанный вариант с реального приложения):

Код:
    [Serializable]
    public class ApplicationSettings //класс хранящий настройки
    {
        .........
        //Свойства

        public System.Windows.Media.Color ColorBack; 

        public System.Windows.Media.Color BrushLinesRect; 
        /// <summary>
        /// Позиция окна настроек прогаммы
        /// </summary>
        private System.Windows.Point mainWindowPosition; //Позиция окна настроек прогаммы
     .........
     }

    /// <summary>
    /// Глобальные настройки приложения
    /// </summary>
    public class GlobalSettings
    {
        /// <summary>
        /// Статичный экземпляр класса настроек приложения ApplicationSettings. Хранит все настройки приложения.
        /// </summary>
        public static ApplicationSettings appSettings = new ApplicationSettings();

        public static void Save()
        {
            String SettingsFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
                + "\\YourProgram\\" + Application.ProductVersion.ToString() + "\\Settings.xml";

            XmlSerializer serializer = new XmlSerializer(typeof(ApplicationSettings));
            TextWriter textWriter = new StreamWriter(SettingsFilePath);
            serializer.Serialize(textWriter, GlobalSettings.appSettings);
            textWriter.Close();
        }

        public static void Load()
        {
            String SettingsFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
                + "\\YourProgram\\" + Application.ProductVersion.ToString() + "\\Settings.xml";

            if (File.Exists(SettingsFilePath))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(ApplicationSettings));
                TextReader textReader = new StreamReader(SettingsFilePath);
                GlobalSettings.appSettings = (ApplicationSettings)serializer.Deserialize(textReader);
                textReader.Close();
            }
        }
    }
Так как обычно много не вмещается, следующим постом напишу ещё...
Casper-SC вне форума Ответить с цитированием
Старый 29.10.2010, 12:12   #4
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Ну вот пример работы с WinAPI:
Код:
    class MonitorPower
    {
        private const int MONITOR_ON = -1;
        private const int MONITOR_OFF = 2;
        private const int WM_SYSCOMMAND = 0x0112;
        private const int SC_MONITORPOWER = 0xF170;
        private const int HWND_BROADCAST = 0xffff;

        [DllImport("user32.dll")]
        private static extern IntPtr SendMessage(IntPtr hWnd,
                                                 uint Msg,
                                                 IntPtr wParam,
                                                 IntPtr lParam);

        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();

        public static void MonitorOff()
        {
            IntPtr foregroundWindow = GetForegroundWindow();
            if (foregroundWindow == IntPtr.Zero)
                foregroundWindow = (IntPtr)HWND_BROADCAST;

            SendMessage(foregroundWindow, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
        }

        public static void MonitorOn()
        {
            IntPtr foregroundWindow = GetForegroundWindow();
            if (foregroundWindow == IntPtr.Zero)
                foregroundWindow = (IntPtr)HWND_BROADCAST;

            SendMessage(foregroundWindow, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_ON);
        }
    }
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как вызвать excell kuzmich Общие вопросы Delphi 5 01.02.2010 21:38
Как вызвать API функции SendMessage и PostMessage() на java? madboy4ik Общие вопросы по Java, Java SE, Kotlin 2 19.01.2010 15:10
Как вызвать печать? Rebel123 Общие вопросы Delphi 3 03.09.2009 17:09
как вызвать ф-ыю? Natok Помощь студентам 4 28.05.2009 15:01
Не могу вызвать API ZahAlex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 15.04.2009 05:37