CFT API .Net (DllImport'ы)

Для тех, кто хочет сделать мир лучше.
Ответить
Сообщение
Автор
Аватара пользователя
Megalan
Разработчик
Разработчик
Сообщения: 335
Зарегистрирован: 02.04.2007
Благодарил (а): 1 раз
Поблагодарили: 29 раз
Контактная информация:

#1 Сообщение 14.01.2010, 17:04

Делал для себя, но может кому-нибудь понадобится :)
Вот DllImport'ы для использования cft api в своих .net программах (спасибо erix920 с cs.rin.ru за его прогу с таким же названием как и у моей dll :), взял оттуда большую часть кода)

Как юзать (для английской студии):
1. Проверяем что наша программа только x86 (project properties -> build -> platform target) ну или мы получим "неверный образ" на x64 системах как только программа начнет обращаться к cft api
2. Копируем все dll в output папку (к примеру bin\release)
3. Добавляем CFTAPIDotNet.dll в References
4. Наслаждаемся и не забываем распространять вместе с программой все dll из архива

Пример (c#):

Код: Выделить всё

 
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 CFTAPIDotNet;
 
namespace CTFAPIDotNet_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            CFTApiDotNet.CFTAPI_initLogs(Application.StartupPath + @"\log.txt", false); // Необходимо, выполняйте прежде, чем пользоваться всеми остальными функциями
            CFTApiDotNet.CFTAPI_setLogLevel(CFTApiDotNet.LOG_LEVEL_INFO);
            CFTApiDotNet.CFInfo contentinfo = new CFTApiDotNet.CFInfo();
            contentinfo = CFTApiDotNet.CFTAPI_getCFInfo(@"F:\games\steam\steamapps\garrysmod content.gcf", @"F:\games\steam\steamapps\common"); // Первый параметр - путь к gcf, второй - путь к common
            textBox1.Text = @"F:\games\steam\steamapps\garrysmod content.gcf";
            textBox1.Text += "\r\nAppID: " + contentinfo.appId + "\r\n" + "Версия: " + contentinfo.appVersion + "\r\n" + "Готовность: " + contentinfo.completion + "\r\n" + "Тип: " + contentinfo.cfType; // cfType возвращает: 0=неверный файл 1=gcf 2=ncf
            CFTApiDotNet.CFTAPI_closeLogs(Application.StartupPath + @"\log.txt", false); // Необходимо, выполняйте когда вам больше не нужен cftapi, либо когда закрываете программу. (Для повторного использования cftapi не забываем выполнять CFTAPI_initLogs)
        }
    }
}
 

Качаем

Аватара пользователя
x_000
Полковник
Полковник
Сообщения: 4889
Зарегистрирован: 25.02.2008
Откуда: Deutsches Reich
Благодарил (а): 6 раз
Поблагодарили: 18 раз

#2 Сообщение 14.01.2010, 17:50

Megalan писал(а):.net
от этого я едва сдерживаюсь, но вот это
Megalan писал(а):using System.Linq;
окончательно добивает меня и выводит из себя, линк говно

Аватара пользователя
Megalan
Разработчик
Разработчик
Сообщения: 335
Зарегистрирован: 02.04.2007
Благодарил (а): 1 раз
Поблагодарили: 29 раз
Контактная информация:

#3 Сообщение 14.01.2010, 17:56

Все вопросы к microsoft, это они догадались в шаблон windows application засовывать столько хлама

proplayer666
Маппер
Маппер
Сообщения: 1748
Зарегистрирован: 18.02.2008
Откуда: <удалено>

#4 Сообщение 14.01.2010, 20:16

Megalan
Все отлично только Microsoft.VisualBasic в референсах пугает :)
Завязываю с играми
Мну в Xbox LIVE
Изображение
Изображение
Изображение

Аватара пользователя
Megalan
Разработчик
Разработчик
Сообщения: 335
Зарегистрирован: 02.04.2007
Благодарил (а): 1 раз
Поблагодарили: 29 раз
Контактная информация:

#5 Сообщение 14.01.2010, 20:26

Ну прост оригинальный код был на vb, ну а так как я немного знаю vb я не стал заморачиваться особо над этим, а просто дописал его. Когда будет время перепишу под c#)

Код то всеравно в итоге превращается в IL (тобишь становится универсальным) так что разницы большой нету

Ответить