Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/302: Рейтинг темы: голосов - 302, средняя оценка - 4.53
12 / 12 / 3
Регистрация: 17.08.2010
Сообщений: 84

Как закрыть процесс Excel?

25.05.2011, 13:11. Показов 58337. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Не могу решить следующую проблему:
Создаю экземпляр Excel, открываю файл, закрываю его. В результате в task manager все равно остается висеть процесс Excel.exe. Он пропадает только после полного закрытия приложения.
Вот код:

C#
1
2
3
4
5
 Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
            excelapp.Workbooks.Open(System.Windows.Forms.Application.StartupPath + "\\Шаблон1.xlsx", Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, true, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
 
excelapp.Quit();
Подскажите пожалуйста как закрыть так, чтобы из процессов также убралось?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.05.2011, 13:11
Ответы с готовыми решениями:

Как сделать, чтобы при нажатии 2х клавиш закрыть сторонний процесс
Как сделать, чтобы при нажатии 2х клавиш закрыть сторонний процесс? Допустим при нажатии ктрл+таб закрывался хром. if...

Закрыть процесс или убить для применения обновлений
Привет, подскажите как убить процесс зная его AppName ( System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; ) Просто...

Закрыть полностью файл Excel
class CreateExcelDoc { Excel.Workbook workbook = null; Excel.Application app = null; Excel.Worksheet worksheet =...

15
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
25.05.2011, 13:33
Попробуйте сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook workbook = excelapp.Workbooks.Open(System.Windows.Forms.Application.StartupPath + "\\Шаблон1.xlsx", Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
 
            if (workbook != null)
            {
                workbook.Close(false, Type.Missing, Type.Missing);
                excelapp.Workbooks.Close();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
            }
 
            excelapp.Quit();
            GC.Collect();
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(excelapp);
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
25.05.2011, 13:36
Prosess.Kill
0
4 / 4 / 3
Регистрация: 28.04.2011
Сообщений: 43
25.05.2011, 15:03
C#
1
2
3
4
5
6
7
8
9
10
11
using System.Diagnostics;
 
 public void CloseProcess()
        {
            Process[] List;
            List = Process.GetProcessesByName("EXCEL");
            foreach (Process proc in List)
            {
                proc.Kill();
            }
        }
0
PhoenixJack
19.04.2012, 16:34
Хоть уже и не актуально но нашёл решение проблемы. Сборщик мусора не срабатывает, если есть ссылки на приложение Excel.
Вот в примере
C#
1
2
3
4
5
6
7
8
9
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook xlDoc = xlApp.Workbooks.Add();
            Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlDoc.Worksheets[1];
            Microsoft.Office.Interop.Excel.Range xlR = xlSheet.Range["A1"];
            xlR.Value = "5";
            xlApp.Visible = true;
            xlDoc.Close(false);
            xlApp.Quit();
            GC.Collect();
В процессах останется висеть EXCEL.EXE, пока не закроется программа. А вот если добавить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook xlDoc = xlApp.Workbooks.Add();
            Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlDoc.Worksheets[1];
            Microsoft.Office.Interop.Excel.Range xlR = xlSheet.Range["A1"];
            xlR.Value = "5";
            xlApp.Visible = true;
            xlDoc.Close(false);
            xlApp.Quit();
            xlApp = null;
            xlDoc = null;
            xlSheet = null;
            xlR = null;
            GC.Collect();
То есть обнулить все ссылки, то процесс удалится сборщиком мусора.
Можно через Process.Kill, как в примере выше, но тогда вы убьёте все открытые окна, которые могут висеть. Вот если кто найдёт как убить именно одно открытое нами окно - буду премного благодарен.
3 / 3 / 1
Регистрация: 22.04.2011
Сообщений: 31
05.07.2012, 12:06
Цитата Сообщение от TreaNT Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
using System.Diagnostics;
public void CloseProcess()
* * * * {
* * * * * * Process[] List;
* * * * * * List = Process.GetProcessesByName("EXCEL");
* * * * * * foreach (Process proc in List)
* * * * * * {
* * * * * * * * proc.Kill();
* * * * * * }
* * * * }
Очень клево! действительно освобождает ресурс
только до этого надо сделать
C#
1
2
3
4
5
6
               oWB.Close(false);//aplication
                oXL.Quit();//workbook
                oXL = null;
                oWB = null;
                sheets = null;//Sheet
)
1
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
06.06.2013, 10:43
Много времени прошло после создания поста, но всё же я наткнулся на него поисковиком, значит тема актуальна и я могу кому-нибудь помочь.
Вот если кто найдёт как убить именно одно открытое нами окно - буду премного благодарен.
В своей проге я сначала проверяю открыто ли Exce приложение - если да, то прицепляюсь к нему, если нет то создаю новое:
C#
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
using System.Runtime.InteropServices; // Здесь живёт Marshal - нужен для присоединения
...
private Excel.Application excelapp; // Создаём ссылку на Excel приложение
private Excel.Workbook excelappworkbook; // Создаём ссылку на рабочую книгу
...
int flagexcelapp = 0;
try
{// Присоединение к открытому приложению Excel (если оно открыто)
 excelapp = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
 flagexcelapp = 1; // устанавливаем флаг в 1, будем знать что присоединились
}
catch
{
 excelapp = new Excel.Application();// Если нет, то создаём новое приложение
}
... 
// далее закрытие
// если не присоединялись, а создавали своё приложение то тупо убиваем процессы
if (flagexcelapp == 0)
{
 excelappworkbooks.Close();
 excelapp.Quit();
 Process[] ps2 = System.Diagnostics.Process.GetProcessesByName("EXCEL");
 foreach (Process p2 in ps2)
 {
  p2.Kill();
 }
}
else // Если же мы присоединялись, то закрываем рабочую книгу, по поводу параметров
{    // "false" - можете почитать на MSDN - мне разбираться было лень :)
 excelappworkbook.Close(false,false,false);
}
2
breakboyandre
16.07.2013, 12:37
C#
1
2
3
4
5
6
7
8
9
Excel.Application excelApp = new Excel.Application();
System.Diagnostics.Process excelProc = System.Diagnostics.Process.GetProcessesByName("EXCEL").Last();
excelWorkBook = excelApp.Workbooks.Open(...);
...
...
...
excelWorkBook.Close();
excelApp.Application.Quit();
excelProc.Kill();
У меня прекрасно работает, закрывая открытый моей программой Excel и не трогая остальные Excel'и.
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
16.07.2013, 16:02
Цитата Сообщение от breakboyandre Посмотреть сообщение
меня прекрасно работает, закрывая открытый моей программой Excel и не трогая остальные Excel'и.
Ужасное решение.
Не будет работать, если между вызовами 1-й и 2-й строчки создастся еще один процесс Excel.
Не будет работать, если другая программа решит использовать ваш процесс.
0
breakboyandre
16.07.2013, 18:27
Цитата Сообщение от turbanoff Посмотреть сообщение
Не будет работать, если между вызовами 1-й и 2-й строчки создастся еще один процесс Excel.
Не будет. А вы не создавайте процесс между 1-й и 2-й строчкой.
Цитата Сообщение от turbanoff Посмотреть сообщение
Не будет работать, если другая программа решит использовать ваш процесс.
Из ваших слов складывается чувство, что программы сами решают что им делать. Я считаю, что вероятность подключения к созданному мною процессу сторонней (не моей) программой, довольно мала.
У меня опыта в программировании не очень много. Поэтому нашел оптимальное решение для себя. Недочеты указаны вами. Кто захочет - использует.
4 / 4 / 0
Регистрация: 30.05.2013
Сообщений: 61
09.05.2014, 15:34
Извиняюсь за поднятие старой темы, но все же у меня аналогичный вопрос.
В ручную убивать процесс я не буду, это вообще ужас. Просто нет слов. Например, что, если у пользователя запущен свой Excel?
Использовать GC - отлично, но почему то мне не помогает, процесс все еще висит.
0
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 15
17.08.2015, 23:24
Та же проблема. В одной программе, где надо было просто закрыть сформированный файл екселя все решило убийство процесса. Но сейчас стоит задача, сформировать файл екселя и оставить его для редактирования. Здесь появились трудности, процесс созданный программой даже после закрытия окна екселя через крестик не выгружается из процессов.... Помогите сделать так, что бы созданный программой процесс екселя корректно закрывался.
0
 Аватар для es_
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
24.08.2015, 08:56
Так как вопросы ещё есть, хочу попробовать подвести итог, моей эпопеи с не убиваемым(на самом деле убиваемым) Excel приложением.
Вообще если есть возможность (Если нужно, например, забить ячейки Excel какой-нибудь инфой) то я бы советовал использовать SQL запросы.
Если же нужно редактировать стиль ячеек (границы, свет и т.д. и т.п.) то без библиотеки
Microsoft.Office.Interop.Excel не обойтись
Ну и так об Microsoft.Office.Interop.Excel,
Вот мой кодик. Всё отлажено, Excel процесс не висит.
Всё хорошо работает, если приложение уже было открыто, если приложение не было открыто и если в процессе работы нашей программы пользователь открыл другу книгу.
Такс такс, что ещё... Библиотеку Microsoft.Office.Interop.Excel я использовал версии 12. Специально использовал относительно старенькую версию. В других версиях работа с книгами, листами, ячейками может отличаться. Точно помню, что в 14 версии по-другому выбираются ячейки.
Раньше PhoenixJack писал Сборщик мусора не срабатывает, если есть ссылки на приложение Excel.Вот в примере.
Я давно это пробовал, но почему-то у меня всё равно процесс висел в памяти. Может не все ссылки удалял, а может, чем чёрт не шутит, зависит и от версии библиотеки Microsoft.Office.Interop.Excel
Ну в общем вот:
C#
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;   
using System.Runtime.InteropServices;
 
namespace KILLEXCEL
{
    public partial class Form1 : Form
    {
        public Excel.Application excelApp;          
        public Excel.Range excelCells;
        public Excel.Sheets excelSheets;
        public Excel.Worksheet excelWorkSheet;
        public Excel.Workbooks excelAppWorkbooks;
        public Excel.Workbook excelAppWorkbook;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {// Присоединение к открытому приложению Excel (если оно открыто), имхо так тру, ибо 2 excel процесса в памяти не кошерно
                excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
            }
            catch
            {
                excelApp = new Excel.Application(); // Если нет открытого, то создаём новое приложение
            }
            excelApp.Visible = true;                // Делаем приложение видимым
            excelApp.SheetsInNewWorkbook = 3;       // В новой созданной книге будет 3 листа
            excelApp.Workbooks.Add(Type.Missing);   // Добавляем книгу
            excelAppWorkbooks = excelApp.Workbooks; // Получаем список открытых книг
            excelAppWorkbook = excelAppWorkbooks[excelAppWorkbooks.Count];  // Устанавливаем ссылку на нашу книгу и да именно Count, а не Count-1, так как отсчёт идёт с 1!!!!!!
            excelSheets = excelAppWorkbook.Worksheets; // Получаем список листов в нашей книге
            excelWorkSheet = (Excel.Worksheet)excelSheets.get_Item(1);  // Берем первый лист
            excelCells = excelWorkSheet.get_Range("A1", "A1");          // Берём ячейку А1
            excelCells.Value2 = "HiCyberForum";                         // Пишем в неё что-нибудь
            // Далее опишу закрытие, для того что-бы не висел процесс в памяти, нужно обнулить ВСЕ! ссылки, которые связаны с библиотекой Microsoft.Office.Interop.Excel
            excelCells = null;
            excelWorkSheet = null;
            excelSheets = null;
            try
            {// Тут уж простите за заплатку, выпадало исключение, если файл с таким именем существует и пользователь откажется перезаписывать его
                // Не знаю почему, времени нет разбираться.
                excelAppWorkbook.Save();
            }
            catch { }
            excelAppWorkbook.Close(false, false, false);// Закрываем книгу
            excelAppWorkbooks = excelApp.Workbooks;     // Далее проверяем есть ли ещё другие открытые книги, ведь во время работы нашей программы пользователь мог открыть другую книгу
            if (excelAppWorkbooks.Count == 0)
                excelApp.Quit();            // Если нет то закрываем приложение
            excelAppWorkbook = null;        // Продолжаем обнулять ссылки
            excelAppWorkbooks = null;
            excelApp = null;
            GC.Collect();       // Зовём МистераПропера на помощь
            // С MSDN: Сборке мусора подвергаются все объекты, вне зависимости от времени их нахождения в памяти. Однако объекты, на которые имеются ссылки в управляемом коде, не освобождаются. Используйте этот метод, чтобы принудительно предпринять попытку высвободить максимальный объем доступной памяти.
        }
    }
}
Миниатюры
Как закрыть процесс Excel?  
6
42 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 2
01.03.2016, 09:08
Если тема ещё актуальна, могу предложить своё решение.
В моей программе открывается файл (шаблон) Excel, в него записываются необходимы данные, файл сохраняется на диск под определённым именем (NewFileName). Если ничего дополнительно не делать, то процесс Excel так и будет висеть до закрытия самой программы.
В данном случае создаётся новый Excel.Application, что позволяет получить в памяти отдельный процесс Excel, в независимости есть ли открытые книги Excel:
C#
1
using Excel = Microsoft.Office.Interop.Excel;
В самом начале после объявления класса делаем импорт из DLL
C#
1
2
        [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "GetWindowThreadProcessId")]
        public static extern int GetWindowThreadProcessId([System.Runtime.InteropServices.InAttribute()] System.IntPtr hWnd, out int lpdwProcessId);
Сама процедура записи в файл (лишнее убрал)
C#
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
            Excel.Application application = new Excel.Application
            {
                DisplayAlerts = false
            };
            Excel.Workbook workbook = null;
            Excel.Worksheet worksheet = null;
 
            try
            {
                const string template = "Форма.xltx";
 
                // Открываем книгу из папки с откуда запускаем файлом
                workbook = application.Workbooks.Open(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Application.ExecutablePath), template));
 
                // Получаем активную таблицу
                worksheet = workbook.ActiveSheet as Excel.Worksheet;
/*
Внесение необходимых данных
*/
                //Закрываем Excel
                workbook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(worksheet);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook);
                
                ////Подготовка к убийству процесса Excel
                int ExcelPID = 0;
                int Hwnd = 0;
                Hwnd = application.Hwnd;
                System.Diagnostics.Process ExcelProcess;
                GetWindowThreadProcessId((IntPtr)Hwnd, out ExcelPID);
                ExcelProcess = System.Diagnostics.Process.GetProcessById(ExcelPID);
                ////Конец подготовки к убийству процесса Excel
 
                application.Quit();
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(application);
 
                GC.Collect();
                GC.WaitForPendingFinalizers();
 
                ////Убийство процесса Excel
                ExcelProcess.Kill();
                ExcelProcess = null;
Далее этот сохранённый файл открывается для просмотра пользователю.
Кроме зависшего (до момента закрытия самой программы) в памяти процесса Excel, возникала ещё одна проблема, если файл с именем NewFileName открыт для просмотра, а пользователь попытается сформировать файл с таким же именем, то, разумеется, при попытке сохранить такой файл, будет ошибка. Убивать процесс Excel без проверки нельзя, так как могут быть открыты другие документы.
Вот как это решено у меня:
C#
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
                try
                {// Присоединение к открытому приложению Excel (если оно открыто).
                    excelApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
 
                    foreach (var item in excelApp.Workbooks)
                    {
                        string tstr = (item as Excel.Workbook).Name;
                        if (tstr== NewFileName)  //Если открыт документ с таким же именем как и тот, что мы сохраняем, то
                        {
                            (item as Excel.Workbook).Close(false); //закрываем его.
                        }
                    }
 
                    if (excelApp.Workbooks.Count < 1) //Если открытых книг не осталось, то завершим процесс
                    {
                        ////Подготовка к убийству процесса Excel
                        int tExcelPID = 0;
                        int tHwnd = 0;
                        tHwnd = excelApp.Hwnd; //Получим HWND окна
                        System.Diagnostics.Process tExcelProcess;
                        GetWindowThreadProcessId((IntPtr)tHwnd, out tExcelPID); //По HWND получим PID
                        tExcelProcess = System.Diagnostics.Process.GetProcessById(tExcelPID); //Подключимся к процессу
                        ////Убийство процесса Excel
                        tExcelProcess.Kill(); 
                        tExcelProcess = null;
                    }
 
 
                }
2
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
25.09.2018, 14:26
Процесс можно получить из самого экземпляра

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[DllImport("user32.dll")]
static extern int GetWindowThreadProcessId(int hWnd, out int lpdwProcessId);
 
static Process GetExcelProcess(Excel.Application excelApp)
        {
            GetWindowThreadProcessId(excelApp.Hwnd, out int id);
            return Process.GetProcessById(id);
        }
 
Excel.Application app = new Excel.Application();
Process appProcess = GetExcelProcess(app);
Excel.Workbook workBook = app.Workbooks.Open(doc.pathLoadDocument);
 
workBook.Close();
app.Quit();
appProcess.Kill();
0
130 / 68 / 31
Регистрация: 24.07.2018
Сообщений: 787
03.04.2019, 11:52
tdm_nlomov, Давно уже ищу решение, вроде работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2019, 11:52
Помогаю со студенческими работами здесь

Не закрывает процесс Excel.exe
Нужна помощь! После копирования строк и столбцов из одного файла Excel в другой файл Excel не закрывается процесс Excel.exe. ...

Открываю Excel документ, могу закрыть, только он не убиваеться из процесса задач
Работаю в Visual studeo 2005 в С#. Открываю Exel документ, могу закрыть, только он не убиваеться из процесса задач. Из процесса задач Exel...

Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel?
Здравствуйте! Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel? Вопрос обсуждается везде и много...

Как закрыть процесс при открытии диспетчера задач?
Как закрыть процесс (к примеру Setup.exe) при открытии диспетчера задач?

Как создать приложение, которое невозможно закрыть даже завершая процесс
Привет друзья. Обращаюсь к Вам по следующему вопросу: Необходимо сделать не убиваемое консольное приложение т.е. что бы его нельзя было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru